From b8337628ba73600b99567844b0d1ad7aa9ba5d3a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Reimar=20D=C3=B6ffinger?= Date: Sun, 13 Dec 2015 13:22:42 +0100 Subject: [PATCH] Fix parsing of examples with multiline foreign part. --- .../parser/wiktionary/EnForeignParser.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/hughes/android/dictionary/parser/wiktionary/EnForeignParser.java b/src/com/hughes/android/dictionary/parser/wiktionary/EnForeignParser.java index c4748e6..c6743f2 100644 --- a/src/com/hughes/android/dictionary/parser/wiktionary/EnForeignParser.java +++ b/src/com/hughes/android/dictionary/parser/wiktionary/EnForeignParser.java @@ -212,7 +212,7 @@ public final class EnForeignParser extends EnParser { final String prefix = listSection.firstPrefix; if (prefix.length() > 1) { // Could just get looser and say that any prefix longer than first is a sublist. - LOG.warning("Prefix too long: " + listSection); + LOG.warning("Prefix '" + prefix + "' too long: " + listSection); incrementCount("WARNING: Prefix too long"); return; } @@ -241,7 +241,7 @@ public final class EnForeignParser extends EnParser { String lastForeign = null; for (int i = 0; i < listSection.nextPrefixes.size(); ++i) { final String nextPrefix = listSection.nextPrefixes.get(i); - final String nextLine = listSection.nextLines.get(i); + String nextLine = listSection.nextLines.get(i); // TODO: This splitting is not sensitive to wiki code. int dash = nextLine.indexOf("—"); @@ -271,6 +271,14 @@ public final class EnForeignParser extends EnParser { } } else if (nextPrefix.equals("#::") || nextPrefix.equals("#**")) { if (lastForeign != null && pairEntry.pairs.size() > 0) { + if (i + 1 < listSection.nextPrefixes.size()) { + // Chinese has sometimes multiple foreign lines + final String nextNextPrefix = listSection.nextPrefixes.get(i + 1); + if (nextNextPrefix.equals("#::") || nextNextPrefix.equals("#**")) { + ++i; + nextLine += "\n" + listSection.nextLines.get(i); + } + } pairEntry.pairs.remove(pairEntry.pairs.size() - 1); final Pair pair = new Pair(formatAndIndexExampleString(nextLine, enIndexBuilder, indexedEntry), formatAndIndexExampleString(lastForeign, foreignIndexBuilder, indexedEntry), swap); if (pair.lang1 != "--" || pair.lang2 != "--") { -- 2.43.0