@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { String content = current.getContent(); if (content.charAt(0) == '-') current.putProperty("hideFirst", ""); boolean endOfTable = false; while (!endOfTable) { Symbol row = new Symbol(tableRow); row.setStartOffset(parser.getOffset()); current.add(row); while (true) { int offset = parser.getOffset(); Symbol cell = parseCell(parser, content); if (parser.getOffset() == offset) { endOfTable = true; break; } if (parser.atEnd()) return Symbol.nothing; if (containsNewLine(cell)) return Symbol.nothing; row.add(cell); if (endsRow(parser.getCurrent())) break; } row.setEndOffset(parser.getOffset()); if (!startsRow(parser.getCurrent())) break; } return new Maybe<>(current); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { String content = current.getContent(); if (content.charAt(0) == '-') current.putProperty("hideFirst", ""); boolean endOfTable = false; while (!endOfTable) { Symbol row = new Symbol(tableRow); row.setStartOffset(parser.getOffset()); current.add(row); while (true) { int offset = parser.getOffset(); Symbol cell = parseCell(parser, content); if (parser.getOffset() == offset) { endOfTable = true; break; } if (parser.atEnd()) return Symbol.nothing; if (containsNewLine(cell)) return Symbol.nothing; row.add(cell); if (endsRow(parser.getCurrent())) break; } row.setEndOffset(parser.getOffset()); if (!startsRow(parser.getCurrent())) break; } return new Maybe<>(current); }