X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fparser%2FWikiTokenizer.java;h=47aac9488de54449f81399f33b29f3e264f55ac7;hb=794c2989d4ff4c456c9aa1066150c6d51a5aae84;hp=6c81749006ea96d5dfe362459206d9ded25cf7e0;hpb=52123581b0c4aa46298b9d6cbc4697accffc1cc7;p=DictionaryPC.git diff --git a/src/com/hughes/android/dictionary/parser/WikiTokenizer.java b/src/com/hughes/android/dictionary/parser/WikiTokenizer.java index 6c81749..47aac94 100644 --- a/src/com/hughes/android/dictionary/parser/WikiTokenizer.java +++ b/src/com/hughes/android/dictionary/parser/WikiTokenizer.java @@ -24,11 +24,11 @@ import java.util.regex.Pattern; public final class WikiTokenizer { public static interface Callback { - void onPlainText(WikiTokenizer wikiTokenizer); + void onPlainText(final String text); void onMarkup(WikiTokenizer wikiTokenizer); void onWikiLink(WikiTokenizer wikiTokenizer); void onNewline(WikiTokenizer wikiTokenizer); - void onFunction(String functionName, List functionPositionArgs, + void onFunction(final WikiTokenizer tokenizer, String functionName, List functionPositionArgs, Map functionNamedArgs); void onHeading(WikiTokenizer wikiTokenizer); void onListItem(WikiTokenizer wikiTokenizer); @@ -104,27 +104,41 @@ public final class WikiTokenizer { positionArgs.clear(); namedArgs.clear(); } - - public void dispatch(final Callback callback) { - while (nextToken() != null) { - if (isPlainText()) { - callback.onPlainText(this); - } else if (isMarkup()) { - callback.onMarkup(this); - } else if (isWikiLink) { - callback.onWikiLink(this); - } else if (isNewline()) { - callback.onNewline(this); - } else if (isFunction()) { - callback.onFunction(functionName(), functionPositionArgs(), functionNamedArgs()); - } else if (isHeading()) { - callback.onHeading(this); - } else if (isListItem()) { - callback.onListItem(this); - } else if (isComment()) { - callback.onComment(this); - } else { - throw new IllegalStateException("Unknown wiki state."); + + private static final Pattern POSSIBLE_WIKI_TEXT = Pattern.compile( + "\\{\\{|" + + "\\[\\[|" + + "