public Symbol parseTo(SymbolType terminator) { return parseTo(terminator, ParseSpecification.normalPriority); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { String state = ""; Symbol next = parser.moveNext(1); if (next.getContent().equals(">")) { state = CLOSED; next = parser.moveNext(1); } else if (next.getContent().equals("<")) { state = INVISIBLE; next = parser.moveNext(1); } if (!next.isType(SymbolType.Whitespace)) return Symbol.nothing; Symbol titleText = parser.parseToIgnoreFirst(SymbolType.Newline); if (parser.atEnd()) return Symbol.nothing; Symbol bodyText = parser.parseTo(SymbolType.CloseCollapsible); if (parser.atEnd()) return Symbol.nothing; // Remove trailing newline so we do not introduce excessive whitespace in the page. if (parser.peek().isType(SymbolType.Newline)) { parser.moveNext(1); } return new Maybe<>(current .putProperty(STATE, state) .add(titleText) .add(bodyText)); }
public Symbol parseTo(SymbolType terminator) { return parseTo(terminator, ParseSpecification.normalPriority); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { String state = ""; Symbol next = parser.moveNext(1); if (next.getContent().equals(">")) { state = CLOSED; next = parser.moveNext(1); } else if (next.getContent().equals("<")) { state = INVISIBLE; next = parser.moveNext(1); } if (!next.isType(SymbolType.Whitespace)) return Symbol.nothing; Symbol titleText = parser.parseToIgnoreFirst(SymbolType.Newline); if (parser.atEnd()) return Symbol.nothing; Symbol bodyText = parser.parseTo(SymbolType.CloseCollapsible); if (parser.atEnd()) return Symbol.nothing; // Remove trailing newline so we do not introduce excessive whitespace in the page. if (parser.peek().isType(SymbolType.Newline)) { parser.moveNext(1); } return new Maybe<>(current .putProperty(STATE, state) .add(titleText) .add(bodyText)); }
private Symbol makeListBody(Parser parser) { while (!parser.peek(new SymbolType[]{SymbolType.Whitespace}).isEmpty()) { parser.moveNext(1); } return parser.parseTo(SymbolType.Newline, 1); }
private Symbol makeListBody(Parser parser) { while (!parser.peek(new SymbolType[]{SymbolType.Whitespace}).isEmpty()) { parser.moveNext(1); } return parser.parseTo(SymbolType.Newline, 1); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol body = parser.parseTo(SymbolType.CloseEvaluator); if (parser.atEnd()) return Symbol.nothing; return new Maybe<>(current.add(body)); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol body = parser.parseTo(SymbolType.CloseEvaluator); if (parser.atEnd()) return Symbol.nothing; return new Maybe<>(current.add(body)); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol nesting = parser.parseTo(SymbolType.CloseNesting, ParseSpecification.nestingPriority); if (!parser.getCurrent().isType(SymbolType.CloseNesting)) return Symbol.nothing; current.add(nesting); return new Maybe<>(current); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol nesting = parser.parseTo(SymbolType.CloseNesting, ParseSpecification.nestingPriority); if (!parser.getCurrent().isType(SymbolType.CloseNesting)) return Symbol.nothing; current.add(nesting); return new Maybe<>(current); }
public Maybe<String> parseToAsString(SymbolType terminator) { int start = scanner.getOffset(); scanner.markStart(); parseTo(terminator); if (!atEnd() && !getCurrent().isType(terminator)) return Maybe.noString; return scanner.stringFromStart(start); }
public Maybe<String> parseToAsString(SymbolType terminator) { int start = scanner.getOffset(); scanner.markStart(); parseTo(terminator); if (!atEnd() && !getCurrent().isType(terminator)) return Maybe.noString; return scanner.stringFromStart(start); }