// Copyright 2013 Thomas Müller // This file is part of MarMoT, which is licensed under GPLv3. package marmot.morph.io; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import marmot.core.Sequence; import marmot.morph.Sentence; import marmot.morph.Word; import marmot.util.LineIterator; public class SentenceTextReader implements Iterable<Sequence> { private String filename_; public SentenceTextReader(String filename) { filename_ = filename; } @Override public Iterator<Sequence> iterator() { final LineIterator iterator = new LineIterator(filename_); return new Iterator<Sequence>() { @Override public boolean hasNext() { return iterator.hasNext(); } @Override public Sequence next() { List<Word> tokens = new LinkedList<Word>(); while (iterator.hasNext()) { List<String> fields = iterator.next(); if (fields.isEmpty()) { if (!tokens.isEmpty()) { break; } } else { for (String field : fields) { Word word = new Word(field); tokens.add(word); } } } return new Sentence(tokens); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }