]> gitweb.fperrin.net Git - DictionaryPC.git/blobdiff - src/com/hughes/android/dictionary/parser/wiktionary/AbstractWiktionaryParser.java
Italian verb conjugations!
[DictionaryPC.git] / src / com / hughes / android / dictionary / parser / wiktionary / AbstractWiktionaryParser.java
index c3bd2ffb1757377baf1b78d1cbe1643086afde9b..8d03bff4c004418df51fd0a8a63d86399d9ac6be 100644 (file)
@@ -48,11 +48,13 @@ public abstract class AbstractWiktionaryParser implements Parser {
   final Set<String> pairsAdded = new LinkedHashSet<String>();
   
   EntrySource entrySource;
-  String title;
+  public String title;
 
 
   abstract void parseSection(final String heading, final String text);
   
+  abstract void removeUselessArgs(final Map<String, String> namedArgs);
+  
   @Override
   public void parse(final File file, final EntrySource entrySource, final int pageLimit) throws IOException {
     this.entrySource = entrySource;
@@ -85,6 +87,7 @@ public abstract class AbstractWiktionaryParser implements Parser {
       }
     }
     } finally {
+      dis.close();
       LOG.info("***COUNTERS***");
       for (final Map.Entry<String, AtomicInteger> entry : counters.entrySet()) {
         LOG.info(entry.getKey() + ": " + entry.getValue());
@@ -99,7 +102,7 @@ public abstract class AbstractWiktionaryParser implements Parser {
 
   public void incrementCount(final String string) {
     AtomicInteger counter = counters.get(string);
-    if (counter != null) {
+    if (counter == null) {
       counter = new AtomicInteger();
       counters.put(string, counter);
     }
@@ -109,7 +112,7 @@ public abstract class AbstractWiktionaryParser implements Parser {
   
   // -------------------------------------------------------------------------
   
-  static final class AppendAndIndexWikiCallback<T extends AbstractWiktionaryParser> implements WikiTokenizer.Callback {
+  static class AppendAndIndexWikiCallback<T extends AbstractWiktionaryParser> implements WikiTokenizer.Callback {
 
     final T parser;
     StringBuilder builder;
@@ -149,8 +152,10 @@ public abstract class AbstractWiktionaryParser implements Parser {
       this.entryTypeName = oldEntryTypeName;
     }
     
-    public void dispatch(final String wikiText, final EntryTypeName entryTypeName) {
+    public String dispatch(final String wikiText, final EntryTypeName entryTypeName) {
+      final int start = builder.length();
       dispatch(wikiText, this.indexBuilder, entryTypeName);
+      return builder.substring(start);
     }
 
     @Override
@@ -180,7 +185,7 @@ public abstract class AbstractWiktionaryParser implements Parser {
       FunctionCallback<T> functionCallback = functionCallbacks.get(name);
       if (functionCallback == null || !functionCallback.onWikiFunction(wikiTokenizer, name, args, namedArgs, parser, this)) {
         // Default function handling:
-//        namedArgs.keySet().removeAll(EnWiktionaryXmlParser.USELESS_WIKI_ARGS);
+        parser.removeUselessArgs(namedArgs);
         final boolean single = args.isEmpty() && namedArgs.isEmpty();
         builder.append(single ? "{" : "{{");
 
@@ -192,7 +197,7 @@ public abstract class AbstractWiktionaryParser implements Parser {
         builder.append(single ? "}" : "}}");
       }
     }
-
+    
     @Override
     public void onHtml(WikiTokenizer wikiTokenizer) {
       // Unindexed for now.
@@ -210,17 +215,17 @@ public abstract class AbstractWiktionaryParser implements Parser {
     }
 
     @Override
-    public final void onNewline(WikiTokenizer wikiTokenizer) {
+    public void onNewline(WikiTokenizer wikiTokenizer) {
       assert false;
     }
 
     @Override
-    public final void onHeading(WikiTokenizer wikiTokenizer) {
+    public void onHeading(WikiTokenizer wikiTokenizer) {
       assert false;
     }
 
     @Override
-    public final void onListItem(WikiTokenizer wikiTokenizer) {
+    public void onListItem(WikiTokenizer wikiTokenizer) {
       assert false;
     }
   }
@@ -234,7 +239,7 @@ public abstract class AbstractWiktionaryParser implements Parser {
         final AppendAndIndexWikiCallback<T> appendAndIndexWikiCallback) {
       
       if (name != null) {
-        appendAndIndexWikiCallback.builder.append(name);
+        appendAndIndexWikiCallback.dispatch(name, null);
       }
       for (int i = 0; i < args.size(); ++i) {
         if (args.get(i).length() > 0) {
@@ -266,6 +271,4 @@ public abstract class AbstractWiktionaryParser implements Parser {
     }
   }
 
-
-
 }