+ foreignIndexBuilder.addEntryWithString(indexedEntry, form, EntryTypeName.WIKTIONARY_INFLECTD_FORM_SINGLE, EntryTypeName.WIKTIONARY_INFLECTED_FORM_MULTI);
+ }
+ }
+
+ // Do examples.
+ 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);
+ int dash = nextLine.indexOf("—");
+ int mdashLen = 7;
+ if (dash == -1) {
+ dash = nextLine.indexOf("—");
+ mdashLen = 1;
+ }
+ if (dash == -1) {
+ dash = nextLine.indexOf(" - ");
+ mdashLen = 3;
+ }
+
+ if ((nextPrefix.equals("#:") || nextPrefix.equals("##:")) && dash != -1) {
+ final String foreignEx = nextLine.substring(0, dash);
+ final String englishEx = nextLine.substring(dash + mdashLen);
+ final Pair pair = new Pair(formatAndIndexExampleString(englishEx, enIndexBuilder, indexedEntry), formatAndIndexExampleString(foreignEx, foreignIndexBuilder, indexedEntry), swap);
+ if (pair.lang1 != "--" && pair.lang1 != "--") {
+ pairEntry.pairs.add(pair);
+ }
+ lastForeign = null;
+ } else if (nextPrefix.equals("#:") || nextPrefix.equals("##:")){
+ final Pair pair = new Pair("--", formatAndIndexExampleString(nextLine, null, indexedEntry), swap);
+ lastForeign = nextLine;
+ if (pair.lang1 != "--" && pair.lang1 != "--") {
+ pairEntry.pairs.add(pair);
+ }
+ } else if (nextPrefix.equals("#::") || nextPrefix.equals("#**")) {
+ if (lastForeign != null && pairEntry.pairs.size() > 0) {
+ 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 != "--") {
+ pairEntry.pairs.add(pair);
+ }
+ lastForeign = null;
+ } else {
+ LOG.warning("TODO: English example with no foreign: " + title + ", " + nextLine);
+ final Pair pair = new Pair("--", formatAndIndexExampleString(nextLine, null, indexedEntry), swap);
+ if (pair.lang1 != "--" || pair.lang2 != "--") {
+ pairEntry.pairs.add(pair);
+ }
+ }
+ } else if (nextPrefix.equals("#*")) {
+ // Can't really index these.
+ final Pair pair = new Pair("--", formatAndIndexExampleString(nextLine, null, indexedEntry), swap);
+ lastForeign = nextLine;
+ if (pair.lang1 != "--" || pair.lang2 != "--") {
+ pairEntry.pairs.add(pair);
+ }
+ } else if (nextPrefix.equals("#::*") || nextPrefix.equals("##") || nextPrefix.equals("#*:") || nextPrefix.equals("#:*") || true) {
+ final Pair pair = new Pair("--", formatAndIndexExampleString(nextLine, null, indexedEntry), swap);
+ if (pair.lang1 != "--" || pair.lang2 != "--") {
+ pairEntry.pairs.add(pair);
+ }
+// } else {
+// assert false;
+ }
+ }
+ }
+
+ private String formatAndIndexExampleString(final String example, final IndexBuilder indexBuilder, final IndexedEntry indexedEntry) {
+ final WikiTokenizer wikiTokenizer = new WikiTokenizer(example, false);
+ final StringBuilder builder = new StringBuilder();
+ boolean insideTripleQuotes = false;
+ while (wikiTokenizer.nextToken() != null) {
+ if (wikiTokenizer.isPlainText()) {
+ builder.append(wikiTokenizer.token());
+ if (indexBuilder != null) {
+ indexBuilder.addEntryWithString(indexedEntry, wikiTokenizer.token(), EntryTypeName.WIKTIONARY_EXAMPLE);
+ }
+ } else if (wikiTokenizer.isWikiLink()) {
+ final String text = wikiTokenizer.wikiLinkText().replaceAll("'", "");
+ builder.append(text);
+ if (indexBuilder != null) {
+ indexBuilder.addEntryWithString(indexedEntry, text, EntryTypeName.WIKTIONARY_EXAMPLE);
+ }
+ } else if (wikiTokenizer.isFunction()) {
+ builder.append(wikiTokenizer.token());
+ } else if (wikiTokenizer.isMarkup()) {
+ if (wikiTokenizer.token().equals("'''")) {
+ insideTripleQuotes = !insideTripleQuotes;
+ }
+ } else if (wikiTokenizer.isComment() || wikiTokenizer.isNewline()) {
+ // Do nothing.
+ } else {
+ LOG.warning("unexpected token: " + wikiTokenizer.token());