]> gitweb.fperrin.net Git - DictionaryPC.git/blobdiff - src/com/hughes/android/dictionary/parser/wiktionary/EnFunctionCallbacks.java
Added WholeSection entries and parser.
[DictionaryPC.git] / src / com / hughes / android / dictionary / parser / wiktionary / EnFunctionCallbacks.java
index 4d11824b1e37a6208b9bb4bf5cd323e46dc04b74..5593ffd8bc31826ef782853eebfb37a2d8876f9b 100644 (file)
@@ -34,7 +34,7 @@ class EnFunctionCallbacks {
   static final Map<String,FunctionCallback<EnParser>> DEFAULT = new LinkedHashMap<String, FunctionCallback<EnParser>>();
   
   static {
-    FunctionCallback<EnParser> callback = new TranslationCallback();
+    FunctionCallback<EnParser> callback = new TranslationCallback<EnParser>();
     DEFAULT.put("t", callback);
     DEFAULT.put("t+", callback);
     DEFAULT.put("t-", callback);
@@ -111,17 +111,19 @@ class EnFunctionCallbacks {
 
   // ------------------------------------------------------------------
 
-  static final class TranslationCallback implements FunctionCallback<EnParser> {
+  static final class TranslationCallback<T extends AbstractWiktionaryParser> implements FunctionCallback<T> {
     @Override
     public boolean onWikiFunction(final WikiTokenizer wikiTokenizer, final String name, final List<String> args,
-        final Map<String, String> namedArgs, final EnParser parser,
-        final AppendAndIndexWikiCallback<EnParser> appendAndIndexWikiCallback) {
+        final Map<String, String> namedArgs, final T parser,
+        final AppendAndIndexWikiCallback<T> appendAndIndexWikiCallback) {
 
       final String transliteration = namedArgs.remove("tr");
       final String alt = namedArgs.remove("alt");
       namedArgs.keySet().removeAll(EnParser.USELESS_WIKI_ARGS);
       if (args.size() < 2) {
-        EnParser.LOG.warning("{{t...}} with wrong args: title=" + parser.title);
+        if (!name.equals("ttbc")) {
+          EnParser.LOG.warning("{{t...}} with wrong args: title=" + parser.title + ", " + wikiTokenizer.token());
+        }
         return false;
       }
       final String langCode = ListUtil.get(args, 0);
@@ -483,6 +485,8 @@ class EnFunctionCallbacks {
         final EnParser parser,
         final AppendAndIndexWikiCallback<EnParser> appendAndIndexWikiCallback) {
       // See: http://en.wiktionary.org/wiki/Template:infl
+      // TODO: Actually these functions should start a new WordPOS:
+      // See: http://en.wiktionary.org/wiki/quattro
       final String langCode = ListUtil.get(args, 0);
       String head = namedArgs.remove("head");
       if (head == null) {
@@ -491,7 +495,6 @@ class EnFunctionCallbacks {
       if (head == null) {
         head = parser.title;
       }
-      parser.titleAppended = true;
       
       namedArgs.keySet().removeAll(EnParser.USELESS_WIKI_ARGS);
 
@@ -503,7 +506,11 @@ class EnFunctionCallbacks {
       final String g2 = namedArgs.remove("g2");
       final String g3 = namedArgs.remove("g3");
 
-      appendAndIndexWikiCallback.dispatch(head, EntryTypeName.WIKTIONARY_TITLE_MULTI);
+      // We might have already taken care of this in a generic way...
+      if (!parser.titleAppended) {
+        appendAndIndexWikiCallback.dispatch(head, EntryTypeName.WIKTIONARY_TITLE_MULTI);
+        parser.titleAppended = true;
+      }
 
       if (g != null) {
         appendAndIndexWikiCallback.builder.append(" {").append(g);