import static com.google.common.base.Preconditions.*;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import net.pterodactylus.rhynodge.Reaction;
/** The new comics. */
private final List<Comic> newComics = Lists.newArrayList();
+ /** The latest comic state. */
+ private ComicState mergedComicState;
+
@Override
public State mergeStates(State previousState, State currentState) {
checkArgument(previousState instanceof ComicState, "previous state must be a comic state");
ComicState currentComicState = (ComicState) currentState;
/* copy old state into new state. */
- ComicState mergedComicState = new ComicState();
+ mergedComicState = new ComicState();
for (Comic comic : previousComicState) {
mergedComicState.add(comic);
}
html.append("<body>");
for (Comic newComic : newComics) {
- html.append("<h1>").append(StringEscapeUtils.escapeHtml4(newComic.title())).append("</h1>\n");
- for (Strip strip : newComic) {
- html.append("<div><img src=\"").append(StringEscapeUtils.escapeHtml4(strip.imageUrl()));
- html.append("\" alt=\"").append(StringEscapeUtils.escapeHtml4(strip.comment()));
- html.append("\" title=\"").append(StringEscapeUtils.escapeHtml4(strip.comment()));
- html.append("\"></div>\n");
+ generateComicHtml(html, newComic);
+ }
+
+ List<Comic> latestComics = new ArrayList<Comic>(mergedComicState.comics());
+ Collections.reverse(latestComics);
+ int comicCount = 0;
+ for (Comic comic : latestComics) {
+ if (newComics.contains(comic)) {
+ continue;
+ }
+ generateComicHtml(html, comic);
+ if (++comicCount == 7) {
+ break;
}
}
return html.append("</body>").toString();
}
+ /**
+ * Generates the HTML for a single comic.
+ *
+ * @param html
+ * The string builder to append the HTML to
+ * @param comic
+ * The comic to render
+ */
+ private void generateComicHtml(StringBuilder html, Comic comic) {
+ html.append("<h1>").append(StringEscapeUtils.escapeHtml4(comic.title())).append("</h1>\n");
+ for (Strip strip : comic) {
+ html.append("<div><img src=\"").append(StringEscapeUtils.escapeHtml4(strip.imageUrl()));
+ html.append("\" alt=\"").append(StringEscapeUtils.escapeHtml4(strip.comment()));
+ html.append("\" title=\"").append(StringEscapeUtils.escapeHtml4(strip.comment()));
+ html.append("\"></div>\n");
+ html.append("<div>").append(StringEscapeUtils.escapeHtml4(strip.comment())).append("</div>\n");
+ }
+ }
+
}