]> gitweb.fperrin.net Git - DictionaryPC.git/blobdiff - src/com/hughes/android/dictionary/engine/WiktionarySplitter.java
Fix splitting of Greek/Ancient Greek.
[DictionaryPC.git] / src / com / hughes / android / dictionary / engine / WiktionarySplitter.java
index 4faef895aa7b70eb086acfd9d119f41bc4004b47..a5dfebc88203a51321928272635f4cfd9a0571c5 100644 (file)
@@ -39,8 +39,9 @@ public class WiktionarySplitter extends org.xml.sax.helpers.DefaultHandler {
 
   // The matches the whole line, otherwise regexes don't work well on French:
   // {{=uk=}}
-  // Spanish has no initial headings, so also detect {{ES as such...
-  static final Pattern headingStart = Pattern.compile("^(\\{\\{ES|(=+)[^=]).*$", Pattern.MULTILINE);
+  // Spanish has no initial headings, tried to also detect {{ES as such
+  // with "^(\\{\\{ES|(=+)[^=]).*$" but that broke English.
+  static final Pattern headingStart = Pattern.compile("^(=+)[^=].*$", Pattern.MULTILINE);
   
   final Map<String,List<Selector>> pathToSelectors = new LinkedHashMap<String, List<Selector>>();
   List<Selector> currentSelectors = null;
@@ -121,6 +122,7 @@ public class WiktionarySplitter extends org.xml.sax.helpers.DefaultHandler {
             title.startsWith("Thread:") || 
             title.startsWith("Template:") ||
             title.startsWith("Summary:") ||
+            title.startsWith("Module:") ||
             // DE
             title.startsWith("Datei:") ||
             title.startsWith("Verzeichnis:") ||
@@ -128,6 +130,7 @@ public class WiktionarySplitter extends org.xml.sax.helpers.DefaultHandler {
             title.startsWith("Thesaurus:") ||
             title.startsWith("Kategorie:") ||
             title.startsWith("Hilfe:") ||
+            title.startsWith("Reim:") ||
             // FR:
             title.startsWith("Annexe:") ||
             title.startsWith("Catégori:") ||
@@ -192,7 +195,16 @@ public class WiktionarySplitter extends org.xml.sax.helpers.DefaultHandler {
             end = text.length();
           }
           
-          final String sectionText = text.substring(0, end);
+          String sectionText = text.substring(0, end);
+          // Hack to remove empty dummy section from French
+          if (sectionText.startsWith("\n=== {{S|étymologie}} ===\n: {{ébauche-étym"))
+          {
+              int dummy_end = sectionText.indexOf("}}", 41) + 2;
+              while (dummy_end + 1 < sectionText.length() &&
+                     sectionText.charAt(dummy_end) == '\n' &&
+                     sectionText.charAt(dummy_end + 1) == '\n') ++dummy_end;
+              sectionText = sectionText.substring(dummy_end);
+          }
           final Section section = new Section(title, heading, sectionText);
           
           try {
@@ -206,6 +218,7 @@ public class WiktionarySplitter extends org.xml.sax.helpers.DefaultHandler {
           }
           
           text = text.substring(end);
+          break;
         }
       }
     }