public void advance() { if (!finished()) { cursor++; } }
public static List<WebDocument> loadDocuments(List<String> allLines) { List<WebDocument> pages = new ArrayList<>(allLines.size() / 10); TextConsumer textConsumer = new TextConsumer(allLines); textConsumer.moveUntil(s -> s.startsWith("<doc id=")); while (!textConsumer.finished()) { String meta = textConsumer.current(); textConsumer.advance(); List<String> pageData = textConsumer.moveUntil(s -> s.startsWith("</doc>")); textConsumer.moveUntil(s -> s.startsWith("<doc")); WebDocument e = WebDocument.fromText(meta, pageData); if (e != null) { pages.add(e); } } return pages; }
TextConsumer tc = new TextConsumer(allLines); while (!tc.finished()) { List<String> sentenceData = new ArrayList<>(); sentenceData.add(tc.current()); tc.advance(); sentenceData.addAll(tc.moveUntil(s -> s.startsWith("S:"))); TextConsumer tw = new TextConsumer(sentenceData); String sentence = tw.getAndAdvance().substring(2); while (!tw.finished()) { String word = tw.getAndAdvance(); List<String> analysesFromLines = tw.moveUntil(s -> !s.startsWith("[")); analysesFromLines = analysesFromLines .stream()
public List<String> moveUntil(Predicate<String> predicate) { List<String> consumed = new ArrayList<>(); while (!finished()) { String line = content.get(cursor); if (predicate.test(line)) { return consumed; } consumed.add(line); cursor++; } return consumed; }