Java Reference
In-Depth Information
private ShakespeareText parseText(
final String title, final int year,
final ShakespeareLineIterator lines
) {
List<ShakespeareLine> parsedLines = new ArrayList<>();
int lineNumber = 0;
String line;
while (lines.hasNext() && !IS_THE_END.test(line = lines.next())) {
lineNumber += 1;
parsedLines.add(new ShakespeareLine(lineNumber, line));
}
return new ShakespeareText(title, year, parsedLines);
}
private Collection<ShakespeareSonnet> parseSonnets(
final ShakespeareLineIterator lines
) {
List<ShakespeareSonnet> sonnets = new ArrayList<>();
while (lines.hasNext() && !IS_THE_END.test(lines.peek())) {
sonnets.add(parseSonnet(lines));
}
if (lines.hasNext()) lines.next(); // Move past THE END
return sonnets;
}
private ShakespeareSonnet parseSonnet(final ShakespeareLineIterator lines) {
List<ShakespeareLine> parsedLines = new ArrayList<>();
int number = parseSonnetNumber(lines);
int lineNumber = 0;
while (
lines.hasNext() &&
!IS_DIGITS.test(lines.peek()) &&
!IS_THE_END.test(lines.peek())
) {
lineNumber += 1;
parsedLines.add(new ShakespeareLine(lineNumber, lines.next()));
}
return new ShakespeareSonnet(number, parsedLines);
}
private static int parseSonnetNumber(ShakespeareLineIterator lines) {
String number = lines.next();
boolean isNumber = IS_DIGITS.test(number);
assert isNumber : "Expected a sonnet number, but got: " + number;
return Integer.parseInt(number);
}
private static String parseTitle(ShakespeareLineIterator lines) {
String title = lines.next();
boolean isTitle = title != null && !title.isEmpty();
isTitle = isTitle && !IS_AUTHOR.test(title);
Search WWH ::




Custom Search