public Maybe<Integer> makeMatch(ScanString input, SymbolStream symbols) { int totalLength = 0; for (ScanMatch match: matches) { Maybe<Integer> matchLength = match.match(input, symbols, totalLength); if (matchLength.isNothing()) return Maybe.noInteger; totalLength += matchLength.getValue(); } return new Maybe<>(totalLength); }
@Override public Maybe<SourcePage> findIncludedPage(String pageName) { return includedPage != null ? new Maybe<>(includedPage) : Maybe.<SourcePage>nothingBecause("missing"); }
@Override public Maybe<Integer> match(ScanString input, SymbolStream symbols, int offset) { int size = 0; while (isDigitInput('0', input, offset + size)) size++; return size > 0 ? new Maybe<>(size) : Maybe.noInteger; } });
private Maybe<String> evaluateAndFormat() { Maybe<Double> evaluation = (new Expression(expression)).evaluate(); if (evaluation.isNothing()) { return Maybe.nothingBecause("invalid expression: " + expression); Double result = evaluation.getValue(); Long iResult = Math.round(result); return new Maybe<>(result.equals(iResult.doubleValue()) ? iResult.toString() : result.toString()); return new Maybe<>(String.format(locale, format, iResult)); return new Maybe<>(result == 0.0 ? "false" : "true"); sString = String.format(locale, format, result.toString()); return new Maybe<>(sString.replaceAll(" ", HtmlUtil.NBSP.html())); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(iResult); return new Maybe<>(String.format(locale, format, cal.getTime())); return new Maybe<>(String.format(locale, format, result)); return Maybe.nothingBecause("invalid format: " + format);
if (includedPage.isNothing()) { current.add("").add(new Symbol(SymbolType.Style, "error").add(includedPage.because())); String helpText = includedPage.getValue().getProperty(WikiPageProperty.HELP); current.add("").add(Parser.make( parser.getPage(),helpText).parse()); ParsingPage included = option.equals("-setup") || option.equals("-teardown") ? parser.getPage() : parser.getPage().copyForNamedPage(includedPage.getValue()); current.add("").add(Parser.make( included, includedPage.getValue().getContent()) .parse()); if (option.equals("-setup")) current.evaluateVariables(setUpSymbols, parser.getVariableSource()); 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); }
@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(); } }
/** * * @param parser parser * @param scanner scanner * @return a possible value if parser should stop. */ public Maybe<Symbol> parseSymbol(Parser parser, Scanner scanner) { while (true) { Scanner backup = new Scanner(scanner); scanner.moveNextIgnoreFirst(this); if (scanner.isEnd()) return Maybe.nothingBecause("scanner is at end of buffer"); Symbol currentToken = scanner.getCurrent(); int startOffset = currentToken.getStartOffset(); if (endsOn(currentToken.getType()) || parser.parentOwns(currentToken.getType(), this)) { scanner.copy(backup); return Maybe.nothingBecause("At termination symbol or parent owns symbol"); } if (terminatesOn(currentToken.getType())) return Maybe.nothingBecause("At termination symbol"); Rule currentRule = currentToken.getType().getWikiRule(); Maybe<Symbol> parsedSymbol = currentRule.parse(currentToken, parser); if (parsedSymbol.isNothing()) { ignoreFirst(currentToken.getType()); scanner.copy(backup); } else { parsedSymbol.getValue().setStartOffset(startOffset).setEndOffset(scanner.getOffset()); clearIgnoresFirst(); return parsedSymbol; } } }
@Override public WikiPage makePage(final File path, final String pageName, final WikiPage parent, final VariableSource variableSource) { Maybe<String> rootPath = variableSource.findVariable("FITNESSE_ROOTPATH"); return new WikiFilePage(path, pageName.substring(0, pageName.length() - WikiFilePage.FILE_EXTENSION.length()), parent, null, versionsController, new FileSystemSubWikiPageFactory(new File(rootPath.getValue()), fileSystem, variableSource, FileSystemPageFactory.this), variableSource); }
@Override public Maybe<String> findVariable(String name) { if(variableSource instanceof UrlPathVariableSource){ Maybe<String> result = ((UrlPathVariableSource) variableSource).findUrlVariable(name); if (!result.isNothing()) return result; } return Maybe.noString; } }
@Override public Maybe<Integer> match(ScanString input, SymbolStream symbols, int offset) { return isStartLine(input, symbols, offset) ? new Maybe<>(0) : Maybe.noInteger; } });
private Maybe<String> evaluateAndFormat() { Maybe<Double> evaluation = (new Expression(expression)).evaluate(); if (evaluation.isNothing()) { return Maybe.nothingBecause("invalid expression: " + expression); Double result = evaluation.getValue(); Long iResult = Math.round(result); return new Maybe<>(result.equals(iResult.doubleValue()) ? iResult.toString() : result.toString()); return new Maybe<>(String.format(locale, format, iResult)); return new Maybe<>(result == 0.0 ? "false" : "true"); sString = String.format(locale, format, result.toString()); return new Maybe<>(sString.replaceAll(" ", HtmlUtil.NBSP.html())); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(iResult); return new Maybe<>(String.format(locale, format, cal.getTime())); return new Maybe<>(String.format(locale, format, result)); return Maybe.nothingBecause("invalid format: " + format);
if (includedPage.isNothing()) { current.add("").add(new Symbol(SymbolType.Style, "error").add(includedPage.because())); String helpText = includedPage.getValue().getProperty(WikiPageProperty.HELP); current.add("").add(Parser.make( parser.getPage(),helpText).parse()); ParsingPage included = option.equals("-setup") || option.equals("-teardown") ? parser.getPage() : parser.getPage().copyForNamedPage(includedPage.getValue()); current.add("").add(Parser.make( included, includedPage.getValue().getContent()) .parse()); if (option.equals("-setup")) current.evaluateVariables(setUpSymbols, parser.getVariableSource()); 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); }
@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(); } }
/** * * @param parser parser * @param scanner scanner * @return a possible value if parser should stop. */ public Maybe<Symbol> parseSymbol(Parser parser, Scanner scanner) { while (true) { Scanner backup = new Scanner(scanner); scanner.moveNextIgnoreFirst(this); if (scanner.isEnd()) return Maybe.nothingBecause("scanner is at end of buffer"); Symbol currentToken = scanner.getCurrent(); int startOffset = currentToken.getStartOffset(); if (endsOn(currentToken.getType()) || parser.parentOwns(currentToken.getType(), this)) { scanner.copy(backup); return Maybe.nothingBecause("At termination symbol or parent owns symbol"); } if (terminatesOn(currentToken.getType())) return Maybe.nothingBecause("At termination symbol"); Rule currentRule = currentToken.getType().getWikiRule(); Maybe<Symbol> parsedSymbol = currentRule.parse(currentToken, parser); if (parsedSymbol.isNothing()) { ignoreFirst(currentToken.getType()); scanner.copy(backup); } else { parsedSymbol.getValue().setStartOffset(startOffset).setEndOffset(scanner.getOffset()); clearIgnoresFirst(); return parsedSymbol; } } }
@Override public WikiPage makePage(final File path, final String pageName, final WikiPage parent, final VariableSource variableSource) { Maybe<String> rootPath = variableSource.findVariable("FITNESSE_ROOTPATH"); return new WikiFilePage(path, pageName.substring(0, pageName.length() - WikiFilePage.FILE_EXTENSION.length()), parent, null, versionsController, new FileSystemSubWikiPageFactory(new File(rootPath.getValue()), fileSystem, variableSource, FileSystemPageFactory.this), variableSource); }
@Override public Maybe<String> findVariable(String name) { if(variableSource instanceof UrlPathVariableSource){ Maybe<String> result = ((UrlPathVariableSource) variableSource).findUrlVariable(name); if (!result.isNothing()) return result; } return Maybe.noString; } }