X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fparser%2FEnWiktionaryXmlParser.java;h=554cd0062c2626ac8bbb7770671d4bb42184cdc2;hb=aab26458fc0a45d2a59d69cb6932090aca3b044f;hp=661db6c280acc7b02090b8ca0bfac8b7d5d00e60;hpb=d67ea3d668131fc79b3782133800e54fc74fa324;p=DictionaryPC.git diff --git a/src/com/hughes/android/dictionary/parser/EnWiktionaryXmlParser.java b/src/com/hughes/android/dictionary/parser/EnWiktionaryXmlParser.java index 661db6c..554cd00 100644 --- a/src/com/hughes/android/dictionary/parser/EnWiktionaryXmlParser.java +++ b/src/com/hughes/android/dictionary/parser/EnWiktionaryXmlParser.java @@ -288,10 +288,18 @@ public class EnWiktionaryXmlParser { static final class Callback implements WikiTokenizer.Callback { - final Map functionCallbacks; - final StringBuilder builder; - final IndexBuilder defaultIndexBuilder; + public Callback(IndexedEntry indexedEntry, IndexBuilder defaultIndexBuilder, + StringBuilder builder, Map functionCallbacks) { + this.indexedEntry = indexedEntry; + this.defaultIndexBuilder = defaultIndexBuilder; + this.builder = builder; + this.functionCallbacks = functionCallbacks; + } + final IndexedEntry indexedEntry; + final IndexBuilder defaultIndexBuilder; + final StringBuilder builder; + final Map functionCallbacks; // TODO: the classes of text are wrong.... @@ -351,9 +359,16 @@ public class EnWiktionaryXmlParser { while (wikiTokenizer.nextToken() != null) { if (wikiTokenizer.isPlainText()) { + final String plainText = wikiTokenizer.token(); + foreignText.append(plainText); + foreignIndexBuilder.addEntryWithString(indexedEntry, plainText, EntryTypeName.WIKTIONARY_TRANSLATION_OTHER_TEXT); } else if (wikiTokenizer.isWikiLink()) { - + final String plainText = wikiTokenizer.wikiLinkText(); + foreignText.append(plainText); + // TODO: should check for English before appending. + foreignIndexBuilder.addEntryWithString(indexedEntry, plainText, EntryTypeName.WIKTIONARY_TRANSLATION_WIKI_TEXT); + } else if (wikiTokenizer.isFunction()) { final String functionName = wikiTokenizer.functionName(); final List args = wikiTokenizer.functionPositionArgs(); @@ -586,6 +601,7 @@ public class EnWiktionaryXmlParser { } else if (name.equals("attention") || name.equals("zh-attention")) { // See: http://en.wiktionary.org/wiki/Template:attention // Ignore these. + // TODO: head } else if (name.equals("head")) { } else if (name.equals("infl")) { // See: http://en.wiktionary.org/wiki/Template:infl final String langCode = get(args, 0); @@ -809,6 +825,13 @@ public class EnWiktionaryXmlParser { // null baseForm happens in Danish. LOG.warning("Null baseform: " + title); } +// } else if (name.equals("defn")) { + // TODO: test me! + // Do nothing. + // http://en.wiktionary.org/wiki/Wiktionary:Requests_for_deletion/Others#Template:defn + // Redundant, used for the same purpose as {{rfdef}}, but this + // doesn't produce the "This word needs a definition" text. + // Delete or redirect. } else { namedArgs.keySet().removeAll(USELESS_WIKI_ARGS); if (args.size() == 0 && namedArgs.isEmpty()) {