X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fparser%2Fwiktionary%2FItFunctionCallbacks.java;h=17ee4beabfe7fef12259426eb9918168b0ebfd79;hb=2fc669d88306d563fc9c899d8d91b25d591692ea;hp=275aa299ec68aed8bbd4e8d1eedb43d70f2aec3b;hpb=26ab537cbfd3e303f636d793fd55ea950dc8f5b2;p=DictionaryPC.git diff --git a/src/com/hughes/android/dictionary/parser/wiktionary/ItFunctionCallbacks.java b/src/com/hughes/android/dictionary/parser/wiktionary/ItFunctionCallbacks.java index 275aa29..17ee4be 100644 --- a/src/com/hughes/android/dictionary/parser/wiktionary/ItFunctionCallbacks.java +++ b/src/com/hughes/android/dictionary/parser/wiktionary/ItFunctionCallbacks.java @@ -14,72 +14,80 @@ package com.hughes.android.dictionary.parser.wiktionary; +import java.util.List; +import java.util.Map; + import com.hughes.android.dictionary.parser.WikiTokenizer; import com.hughes.android.dictionary.parser.wiktionary.AbstractWiktionaryParser.AppendAndIndexWikiCallback; import com.hughes.android.dictionary.parser.wiktionary.AbstractWiktionaryParser.NameAndArgs; -import java.util.List; -import java.util.Map; - class ItFunctionCallbacks { - - static void addGenericCallbacks(Map> callbacks) { - callbacks.put("-hyph-", new Redispatch("\n==== Sillabazione ====\n")); - callbacks.put("-pron-", new Redispatch("\n==== Pronuncia ====\n")); - callbacks.put("-etim-", new Redispatch("\n==== Etimologia / Derivazione ====\n")); - callbacks.put("-syn-", new Redispatch("\n==== Sinonimi ====\n")); - callbacks.put("-ant-", new Redispatch("\n==== Antonimi/Contrari ====\n")); - callbacks.put("-drv-", new Redispatch("\n==== Parole derivate ====\n")); - callbacks.put("-prov-", new Redispatch("\n==== Proverbi e modi di dire ====\n")); - callbacks.put("-rel-", new Redispatch("\n==== Termini correlati ====\n")); - callbacks.put("-ref-", new Redispatch("\n==== Note / Riferimenti ====\n")); - callbacks.put("-trans1-", new SkipSection()); - callbacks.put("-trans2-", new SkipSection()); + static void addGenericCallbacks( + Map> callbacks) { + callbacks.put("-hyph-", new Redispatch<>("\n==== Sillabazione ====\n")); + callbacks.put("-pron-", new Redispatch<>("\n==== Pronuncia ====\n")); + callbacks.put("-etim-", new Redispatch<>("\n==== Etimologia / Derivazione ====\n")); + callbacks.put("-syn-", new Redispatch<>("\n==== Sinonimi ====\n")); + callbacks.put("-ant-", new Redispatch<>("\n==== Antonimi/Contrari ====\n")); + callbacks.put("-drv-", new Redispatch<>("\n==== Parole derivate ====\n")); + callbacks.put("-prov-", new Redispatch<>("\n==== Proverbi e modi di dire ====\n")); + callbacks.put("-ref-", new Redispatch<>("\n==== Note / Riferimenti ====\n")); + callbacks.put("-rel-", new Redispatch<>("\n==== Termini correlati ====\n")); + callbacks.put("-var-", new Redispatch<>("\n==== Varianti ====\n")); - } + callbacks.put("-trans1-", new SkipSection<>()); + callbacks.put("-trans2-", new SkipSection<>()); + callbacks.put("-ref-", new SkipSection<>()); + } - - static final NameAndArgs NAME_AND_ARGS = new NameAndArgs(); + static final NameAndArgs NAME_AND_ARGS = new NameAndArgs<>(); - - static final class Redispatch implements FunctionCallback { - final String newText; - public Redispatch(String newText) { - this.newText = newText; - } + static final class Redispatch implements + FunctionCallback { + final String newText; - @Override - public boolean onWikiFunction(final WikiTokenizer wikiTokenizer, final String name, final List args, - final Map namedArgs, - final T parser, - final AppendAndIndexWikiCallback appendAndIndexWikiCallback) { - if (!namedArgs.isEmpty() || args.size() != 0) { - return false; + public Redispatch(String newText) { + this.newText = newText; } - appendAndIndexWikiCallback.dispatch(newText, null); - return true; - } - } + @Override + public boolean onWikiFunction(final WikiTokenizer wikiTokenizer, final String name, + final List args, + final Map namedArgs, + final T parser, + final AppendAndIndexWikiCallback appendAndIndexWikiCallback) { + if (!namedArgs.isEmpty() || args.size() != 0) { + return false; + } + appendAndIndexWikiCallback.dispatch(newText, null); + return true; + } + } - static final class SkipSection implements FunctionCallback { - public SkipSection() { - } + static final class SkipSection implements + FunctionCallback { + public SkipSection() { + } - @Override - public boolean onWikiFunction(final WikiTokenizer wikiTokenizer, final String name, final List args, - final Map namedArgs, - final T parser, - final AppendAndIndexWikiCallback appendAndIndexWikiCallback) { - while (wikiTokenizer.nextToken() != null) { - if (wikiTokenizer.isFunction() && wikiTokenizer.functionName().startsWith("-") && wikiTokenizer.functionName().endsWith("-")) { - wikiTokenizer.returnToLineStart(); - return true; - } - } - return true; + @Override + public boolean onWikiFunction(final WikiTokenizer wikiTokenizer, final String name, + final List args, + final Map namedArgs, + final T parser, + final AppendAndIndexWikiCallback appendAndIndexWikiCallback) { + while (wikiTokenizer.nextToken() != null) { + if (wikiTokenizer.isFunction() + && wikiTokenizer.functionName().startsWith("-") + && wikiTokenizer.functionName().endsWith("-") + // Hack to prevent infinite-looping, would be better to check that this func was at the start of the line. + && !wikiTokenizer.functionName().contains("trans")) { + wikiTokenizer.returnToLineStart(); + return true; + } + } + return true; } - } + } -} \ No newline at end of file +}