@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { final Symbol body = parser.parseToEnd(SymbolType.Newline); new OptionParser(current, body).parse(); current.add(body); return new Maybe<>(current); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { if (current.getStartOffset() != 0) return Symbol.nothing; final Symbol frontMatter = parser.parseToWithSymbols(CloseFrontMatter.symbolType, SYMBOL_PROVIDER, 0); if (!parser.getCurrent().isType(CloseFrontMatter.symbolType)) return Symbol.nothing; Maybe<Symbol> yaml = processYaml(current, frontMatter); if (yaml.isNothing()) { return Symbol.nothing; } return new Maybe<>(current); }
public Path() { super("Path"); wikiMatcher(new Matcher().startLineOrCell().string("!path")); wikiRule(this); htmlTranslation(new HtmlBuilder("span").body(0, "classpath: ").attribute("class", "meta").inline()); }
@Override public String toTarget(Translator translator, Symbol symbol) { String body = translator.translate(symbol.childAt(0)); Maybe<String> formatLocale = Maybe.noString; if(translator instanceof HtmlTranslator){ formatLocale = ((HtmlTranslator) translator).getParsingPage().findVariable("FORMAT_LOCALE"); } Maybe<String> result = new FormattedExpression(body, formatLocale).evaluate(); if (result.isNothing()) return translator.formatMessage(result.because()); return result.getValue(); } }
public PlainTextTable() { super("PlainTextTable"); wikiMatcher(new Matcher().startLine().string("![")); wikiRule(this); htmlTranslation(new Table()); }
@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); }
@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 String toTarget(Translator translator, Symbol symbol) { String option = symbol.getProperty(Collapsible.STATE); String title = translator.translate(symbol.childAt(0)); String body = translator.translate(symbol.childAt(1)); return generateHtml(option, title, body); }
@Override public SymbolMatch makeMatch(ScanString input, SymbolStream symbols) { for (Matcher matcher: getWikiMatchers()) { Maybe<Integer> matchLength = matcher.makeMatch(input, symbols); if (!matchLength.isNothing()) return new SymbolMatch(this, input, matchLength.getValue()); } return SymbolMatch.noMatch; }
@Override public Maybe<Integer> match(ScanString input, SymbolStream symbols, int offset) { int size = 0; while (true) { char candidate = input.charAt(offset + size); if (candidate == 0) return Maybe.noInteger; if (contains(terminators, candidate)) break; size++; } return size > 0 ? new Maybe<>(size + 1) : Maybe.noInteger; }
public PlainTextTable() { super("PlainTextTable"); wikiMatcher(new Matcher().startLine().string("![")); wikiRule(this); htmlTranslation(new Table()); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { if (current.getStartOffset() != 0) return Symbol.nothing; final Symbol frontMatter = parser.parseToWithSymbols(CloseFrontMatter.symbolType, SYMBOL_PROVIDER, 0); if (!parser.getCurrent().isType(CloseFrontMatter.symbolType)) return Symbol.nothing; Maybe<Symbol> yaml = processYaml(current, frontMatter); if (yaml.isNothing()) { return Symbol.nothing; } 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); }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { final Symbol body = parser.parseToEnd(SymbolType.Newline); new OptionParser(current, body).parse(); current.add(body); return new Maybe<>(current); }
@Override public String toTarget(Translator translator, Symbol symbol) { String option = symbol.getProperty(Collapsible.STATE); String title = translator.translate(symbol.childAt(0)); String body = translator.translate(symbol.childAt(1)); return generateHtml(option, title, body); }