@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol tag = parser.parseToIgnoreFirst(SymbolType.CloseBracket); if (!parser.isMoveNext(SymbolType.OpenBracket)) return Symbol.nothing; Symbol link = parser.parseToIgnoreFirstWithSymbols(SymbolType.CloseBracket, SymbolProvider.aliasLinkProvider); if (!parser.isMoveNext(SymbolType.CloseBracket)) return Symbol.nothing; return new Maybe<>(current.add(tag).add(link)); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol tag = parser.parseToIgnoreFirst(SymbolType.CloseBracket); if (!parser.isMoveNext(SymbolType.OpenBracket)) return Symbol.nothing; Symbol link = parser.parseToIgnoreFirstWithSymbols(SymbolType.CloseBracket, SymbolProvider.aliasLinkProvider); if (!parser.isMoveNext(SymbolType.CloseBracket)) return Symbol.nothing; return new Maybe<>(current.add(tag).add(link)); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { if (!parser.isMoveNext(SymbolType.Whitespace)) return Symbol.nothing; return new Maybe<>(current.add(parser.parseToEnds(0, SymbolProvider.pathRuleProvider, new SymbolType[]{SymbolType.Newline}))); } }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { if (!parser.isMoveNext(SymbolType.Whitespace)) return Symbol.nothing; return new Maybe<Symbol>(current.add(parser.parseToEnds(0, SymbolProvider.pathRuleProvider, new SymbolType[] {SymbolType.Newline}))); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { if (!parser.isMoveNext(SymbolType.Whitespace)) return Symbol.nothing; return new Maybe<>(current.add(parser.parseToEnds(0, SymbolProvider.pathRuleProvider, new SymbolType[]{SymbolType.Newline}))); } }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { if (!parser.isMoveNext(SymbolType.Whitespace)) return Symbol.nothing; Maybe<String> name = parser.parseToAsString(SymbolType.Whitespace); if (name.isNothing()) return Symbol.nothing; String variableName = name.getValue(); if (!ScanString.isVariableName(variableName)) return Symbol.nothing; Symbol next = parser.moveNext(1); Maybe<String> valueString = (next.isType(SymbolType.Text)) ? copyVariableValue(parser, next) : parseVariableValue(parser, next); if (valueString.isNothing()) return Symbol.nothing; String variableValue = valueString.getValue(); parser.getPage().putVariable(variableName, variableValue); return new Maybe<>(current.add(variableName).add(variableValue)); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { if (!parser.isMoveNext(SymbolType.Whitespace)) return Symbol.nothing; Maybe<String> name = parser.parseToAsString(SymbolType.Whitespace); if (name.isNothing()) return Symbol.nothing; String variableName = name.getValue(); if (!ScanString.isVariableName(variableName)) return Symbol.nothing; Symbol next = parser.moveNext(1); Maybe<String> valueString = (next.isType(SymbolType.Text)) ? copyVariableValue(parser, next) : parseVariableValue(parser, next); if (valueString.isNothing()) return Symbol.nothing; String variableValue = valueString.getValue(); parser.getPage().putVariable(variableName, variableValue); return new Maybe<>(current.add(variableName).add(variableValue)); }