X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Ftriggers%2FNewComicTrigger.java;h=d2e068899db5ea53bb6300f29f60f37a908d6572;hb=c3d1babcce7f077c2b57376fa7f9712b921950d8;hp=c8852c720cfe6c13bc28bad8ee78786dfd2629bc;hpb=462f485591dc67d63d538de023b7a1b4851664b9;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/triggers/NewComicTrigger.java b/src/main/java/net/pterodactylus/rhynodge/triggers/NewComicTrigger.java index c8852c7..d2e0688 100644 --- a/src/main/java/net/pterodactylus/rhynodge/triggers/NewComicTrigger.java +++ b/src/main/java/net/pterodactylus/rhynodge/triggers/NewComicTrigger.java @@ -19,6 +19,8 @@ package net.pterodactylus.rhynodge.triggers; import static com.google.common.base.Preconditions.*; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import net.pterodactylus.rhynodge.Reaction; @@ -28,9 +30,11 @@ import net.pterodactylus.rhynodge.output.DefaultOutput; import net.pterodactylus.rhynodge.output.Output; import net.pterodactylus.rhynodge.states.ComicState; import net.pterodactylus.rhynodge.states.ComicState.Comic; +import net.pterodactylus.rhynodge.states.ComicState.Strip; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; /** * {@link Trigger} implementation that detects the presence of new {@link @@ -43,6 +47,9 @@ public class NewComicTrigger implements Trigger { /** The new comics. */ private final List 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"); @@ -52,7 +59,7 @@ public class NewComicTrigger implements Trigger { ComicState currentComicState = (ComicState) currentState; /* copy old state into new state. */ - ComicState mergedComicState = new ComicState(); + mergedComicState = new ComicState(); for (Comic comic : previousComicState) { mergedComicState.add(comic); } @@ -97,8 +104,11 @@ public class NewComicTrigger implements Trigger { for (Comic newComic : newComics) { text.append("Comic Found: ").append(newComic.title()).append("\n\n"); - for (String imageUrl : newComic) { - text.append("Image: ").append(imageUrl).append("\n"); + for (Strip strip : newComic) { + text.append("Image: ").append(strip.imageUrl()).append("\n"); + if (!StringUtils.isBlank(strip.comment())) { + text.append("Comment: ").append(strip.comment()).append("\n"); + } } text.append("\n\n"); } @@ -116,13 +126,42 @@ public class NewComicTrigger implements Trigger { html.append(""); for (Comic newComic : newComics) { - html.append("

").append(StringEscapeUtils.escapeHtml4(newComic.title())).append("

\n"); - for (String imageUrl : newComic) { - html.append("
\n"); + generateComicHtml(html, newComic); + } + + List latestComics = new ArrayList(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("").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("

").append(StringEscapeUtils.escapeHtml4(comic.title())).append("

\n"); + for (Strip strip : comic) { + html.append("
\"").append(StringEscapeUtils.escapeHtml4(strip.comment()));
\n"); + html.append("
").append(StringEscapeUtils.escapeHtml4(strip.comment())).append("
\n"); + } + } + }