]> gitweb.fperrin.net Git - DictionaryPC.git/blobdiff - src/com/hughes/android/dictionary/parser/wiktionary/EnFunctionCallbacks.java
Fix it-noun parser.
[DictionaryPC.git] / src / com / hughes / android / dictionary / parser / wiktionary / EnFunctionCallbacks.java
index 41ee89f735b28e2dd34293142be10b3cbc3f9641..5f7f85087db251128bc061f44e8628263745c0d1 100644 (file)
@@ -232,13 +232,18 @@ class EnFunctionCallbacks {
         final Map<String, String> namedArgs,
         final T parser,
         final AppendAndIndexWikiCallback<T> appendAndIndexWikiCallback) {
-      if (args.size() != 1 || !namedArgs.isEmpty()) {
-        EnParser.LOG.warning("weird qualifier: ");
+      namedArgs.remove("lang");
+      if (!namedArgs.isEmpty()) {
+        EnParser.LOG.warning("weird qualifier: " + wikiTokenizer.token());
         return false;
       }
-      String qualifier = args.get(0);
       appendAndIndexWikiCallback.builder.append("(");
-      appendAndIndexWikiCallback.dispatch(qualifier, null);
+      for (int i = 0; i < args.size(); ++i) {
+          appendAndIndexWikiCallback.dispatch(args.get(i), null);
+          if (i > 0) {
+              appendAndIndexWikiCallback.builder.append(", ");
+          }
+      }
       appendAndIndexWikiCallback.builder.append(")");
       return true;
     }
@@ -252,7 +257,7 @@ class EnFunctionCallbacks {
         final Map<String, String> namedArgs,
         final T parser,
         final AppendAndIndexWikiCallback<T> appendAndIndexWikiCallback) {
-      //namedArgs.remove("lang");
+      namedArgs.remove("lang");
       if (!namedArgs.isEmpty()) {
         EnParser.LOG.warning("weird encoding: " + wikiTokenizer.token());
         return false;
@@ -720,29 +725,30 @@ class EnFunctionCallbacks {
         final EnParser parser,
         final AppendAndIndexWikiCallback<EnParser> appendAndIndexWikiCallback) {
       parser.titleAppended = true;
-      final String base = ListUtil.get(args, 0);
-      final String gender = ListUtil.get(args, 1);
-      final String singular = base + ListUtil.get(args, 2, null);
-      final String plural = base + ListUtil.get(args, 3, null);
+      final String gender = ListUtil.get(args, 0);
+      final String singular = parser.title;
+      final String plural = ListUtil.get(args, 1, null);
       appendAndIndexWikiCallback.builder.append(" ");
       appendAndIndexWikiCallback.dispatch(singular, null, null);
       appendAndIndexWikiCallback.builder.append(" {").append(gender).append("}, ");
-      appendAndIndexWikiCallback.dispatch(plural, null, null);
-      appendAndIndexWikiCallback.builder.append(" {pl}");
+      if (plural != null) {
+        appendAndIndexWikiCallback.dispatch(plural, null, null);
+        appendAndIndexWikiCallback.builder.append(" {pl}");
+        parser.wordForms.add(plural);
+      }
       final String f = namedArgs.remove("f");
       if (f != null) {
           appendAndIndexWikiCallback.builder.append(", ");
           appendAndIndexWikiCallback.dispatch(f, null, null);
           appendAndIndexWikiCallback.builder.append(" {f}");
       }
-      final String m = namedArgs.remove("f");
+      final String m = namedArgs.remove("m");
       if (m != null) {
           appendAndIndexWikiCallback.builder.append(", ");
           appendAndIndexWikiCallback.dispatch(m, null, null);
           appendAndIndexWikiCallback.builder.append(" {m}");
       }
       parser.wordForms.add(singular);
-      parser.wordForms.add(plural);
       if (!namedArgs.isEmpty() || args.size() > 4) {
         EnParser.LOG.warning("Invalid it-noun: " + wikiTokenizer.token());
       }
@@ -1222,4 +1228,4 @@ static final class it_conj_are<T extends AbstractWiktionaryParser> implements Fu
   }
 
 
-}
\ No newline at end of file
+}