X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fparser%2Fenwiktionary%2FFunctionCallbacksDefault.java;h=b9fc2a28f932dc605742ea853f6aa436c513f148;hb=6e6661c2989066377a6a6693dafc0d65bfea4b82;hp=7452645c27ce36424c3c818cd690f3d8571a69f3;hpb=6e732a6929b997865f763c26f5bbfd6dbf35c4fe;p=DictionaryPC.git diff --git a/src/com/hughes/android/dictionary/parser/enwiktionary/FunctionCallbacksDefault.java b/src/com/hughes/android/dictionary/parser/enwiktionary/FunctionCallbacksDefault.java index 7452645..b9fc2a2 100644 --- a/src/com/hughes/android/dictionary/parser/enwiktionary/FunctionCallbacksDefault.java +++ b/src/com/hughes/android/dictionary/parser/enwiktionary/FunctionCallbacksDefault.java @@ -20,6 +20,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; import com.hughes.android.dictionary.engine.EntryTypeName; @@ -41,8 +42,6 @@ public final class FunctionCallbacksDefault { DEFAULT.put("tø", callback); DEFAULT.put("apdx-t", callback); - DEFAULT.put("qualifier", new QualifierCallback()); - callback = new EncodingCallback(); Set encodings = new LinkedHashSet(Arrays.asList( "zh-ts", "zh-tsp", @@ -65,9 +64,6 @@ public final class FunctionCallbacksDefault { DEFAULT.put("p", callback); DEFAULT.put("g", callback); - DEFAULT.put("italbrac", new italbrac()); - DEFAULT.put("gloss", new gloss()); - callback = new AppendArg0(); callback = new Ignore(); @@ -81,9 +77,22 @@ public final class FunctionCallbacksDefault { DEFAULT.put("attention", callback); DEFAULT.put("zh-attention", callback); - DEFAULT.put("not used", new not_used()); - DEFAULT.put("form of", new FormOf()); - DEFAULT.put("wikipedia", new wikipedia()); + + callback = new FormOf(); + DEFAULT.put("form of", callback); + DEFAULT.put("conjugation of", callback); + DEFAULT.put("participle of", callback); + DEFAULT.put("present participle of", callback); + DEFAULT.put("past participle of", callback); + DEFAULT.put("feminine past participle of", callback); + DEFAULT.put("gerund of", callback); + DEFAULT.put("feminine of", callback); + DEFAULT.put("plural of", callback); + DEFAULT.put("feminine plural of", callback); + DEFAULT.put("inflected form of", callback); + DEFAULT.put("alternative form of", callback); + DEFAULT.put("dated form of", callback); + DEFAULT.put("apocopic form of", callback); callback = new InflOrHead(); DEFAULT.put("infl", callback); @@ -92,6 +101,11 @@ public final class FunctionCallbacksDefault { callback = new AppendName(); DEFAULT.put("...", callback); + DEFAULT.put("qualifier", new QualifierCallback()); + DEFAULT.put("italbrac", new italbrac()); + DEFAULT.put("gloss", new gloss()); + DEFAULT.put("not used", new not_used()); + DEFAULT.put("wikipedia", new wikipedia()); } @@ -120,7 +134,15 @@ public final class FunctionCallbacksDefault { appendAndIndexWikiCallback.builder.append("|"); appendAndIndexWikiCallback.dispatch(entry.getKey(), null, null); appendAndIndexWikiCallback.builder.append("="); - appendAndIndexWikiCallback.dispatch(entry.getValue(), null, null); + EntryTypeName entryTypeName = null; + IndexBuilder indexBuilder = null; + // This doesn't work: we'd need to add to word-forms. +// System.out.println(entry.getKey()); +// if (entry.getKey().equals("tr")) { +// entryTypeName = EntryTypeName.WIKTIONARY_TRANSLITERATION; +// indexBuilder = appendAndIndexWikiCallback.parser.foreignIndexBuilder; +// } + appendAndIndexWikiCallback.dispatch(entry.getValue(), indexBuilder, entryTypeName); } } @@ -139,6 +161,10 @@ public final class FunctionCallbacksDefault { return false; } final String langCode = ListUtil.get(args, 0); + if (!appendAndIndexWikiCallback.langCodeToTCount.containsKey(langCode)) { + appendAndIndexWikiCallback.langCodeToTCount.put(langCode, new AtomicInteger()); + } + appendAndIndexWikiCallback.langCodeToTCount.get(langCode).incrementAndGet(); final String word = ListUtil.get(args, 1); final String gender = ListUtil.get(args, 2); // TODO: deal with second (and third...) gender, and alt. @@ -186,15 +212,25 @@ public final class FunctionCallbacksDefault { final Map namedArgs, final EnWiktionaryXmlParser parser, final AppendAndIndexWikiCallback appendAndIndexWikiCallback) { - if (args.size() != 1 || !namedArgs.isEmpty()) { + if (!namedArgs.isEmpty()) { LOG.warning("weird encoding: " + wikiTokenizer.token()); } if (args.size() == 0) { // Things like "{{Jpan}}" exist. return true; } - final String wikiText = args.get(0); - appendAndIndexWikiCallback.dispatch(wikiText, appendAndIndexWikiCallback.entryTypeName); + + for (int i = 0; i < args.size(); ++i) { + if (i > 0) { + appendAndIndexWikiCallback.builder.append(", "); + } + final String arg = args.get(i); +// if (arg.equals(parser.title)) { +// parser.titleAppended = true; +// } + appendAndIndexWikiCallback.dispatch(arg, appendAndIndexWikiCallback.entryTypeName); + } + return true; } } @@ -256,7 +292,11 @@ public final class FunctionCallbacksDefault { displayText = ListUtil.get(args, 1, null); } - appendAndIndexWikiCallback.dispatch(displayText, indexBuilder, entryTypeName); + if (displayText != null) { + appendAndIndexWikiCallback.dispatch(displayText, indexBuilder, entryTypeName); + } else { + LOG.warning("no display text: " + wikiTokenizer.token()); + } final String tr = namedArgs.remove("tr"); if (tr != null) { @@ -388,6 +428,7 @@ public final class FunctionCallbacksDefault { final Map namedArgs, final EnWiktionaryXmlParser parser, final AppendAndIndexWikiCallback appendAndIndexWikiCallback) { + parser.entryIsFormOfSomething = true; String formName = name; if (name.equals("form of")) { formName = ListUtil.remove(args, 0, null);