package com.hughes.android.dictionary.parser; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class WikiLineReader { private final List lineStack = new ArrayList(); private final String wikiText; private int lineStart = 0; private static final Pattern wikiLineEvent = Pattern.compile("$|\\{\\{|\\[\\[|\\}\\}|\\]\\]|", "\n"); } else if (matcher.group().equals("
")) {
        lineEnd = safeIndexOf(wikiText, lineEnd, "
", "\n"); } else if (matcher.group().equals("")) { lineEnd = safeIndexOf(wikiText, lineEnd, "", "\n"); } } if (lineStack.size() > 0 && firstNewline != -1) { lineEnd = firstNewline + 1; } final String result = wikiText.substring(lineStart, lineEnd); lineStart = lineEnd; return cleanUpLine(result); } static int safeIndexOf(final String s, final int start, final String target, final String backup) { int close = s.indexOf(target, start); if (close != -1) { return close + target.length(); } close = s.indexOf(backup, start); if (close != -1) { return close + backup.length(); } return s.length(); } public static String cleanUpLine(String line) { int pos; while ((pos = line.indexOf(""); if (end != -1) { line = line.substring(0, pos) + line.substring(end + 3); } } final Matcher matcher = whitespace.matcher(line); line = matcher.replaceAll(" "); line = line.trim(); return line; } String stuffedLine = null; public void stuffLine(final String line) { assert stuffedLine == null; stuffedLine = line; } }