@Override public Maybe<SourcePage> findIncludedPage(String pageName) { return includedPage != null ? new Maybe<>(includedPage) : Maybe.<SourcePage>nothingBecause("missing"); }
@Override public Maybe<SourcePage> findIncludedPage(String pageName) { return includedPage != null ? new Maybe<>(includedPage) : Maybe.<SourcePage>nothingBecause("missing"); }
private Maybe<String> evaluateAndFormat() { Maybe<Double> evaluation = (new Expression(expression)).evaluate(); if (evaluation.isNothing()) { return Maybe.nothingBecause("invalid expression: " + expression); return new Maybe<>(String.format(locale, format, result)); return Maybe.nothingBecause("invalid format: " + format);
@Override public Maybe<SourcePage> findIncludedPage(String pageName) { PageCrawler crawler = page.getPageCrawler(); WikiPagePath pagePath = PathParser.parse(pageName); if (pagePath == null) { return Maybe.nothingBecause("Page include failed because the page " + pageName + " does not have a valid wiki page name."); } WikiPage includedPage = crawler.getSiblingPage(pagePath); if (includedPage == null) { return Maybe.nothingBecause("Page include failed because the page " + pageName + " does not exist."); } else if (isParentOf(includedPage)) return Maybe.nothingBecause("Error! Cannot include parent page (" + pageName + ")."); else { return new Maybe<SourcePage>(new WikiSourcePage(includedPage)); } }
@Override public Maybe<SourcePage> findIncludedPage(String pageName) { PageCrawler crawler = page.getPageCrawler(); WikiPagePath pagePath = PathParser.parse(pageName); if (pagePath == null) { return Maybe.nothingBecause("Page include failed because the page " + pageName + " does not have a valid wiki page name."); } WikiPage includedPage = crawler.getSiblingPage(pagePath); if (includedPage == null) { return Maybe.nothingBecause("Page include failed because the page " + pageName + " does not exist."); } else if (isParentOf(includedPage)) return Maybe.nothingBecause("Error! Cannot include parent page (" + pageName + ")."); else { return new Maybe<SourcePage>(new WikiSourcePage(includedPage)); } }
private Maybe<String> evaluateAndFormat() { Maybe<Double> evaluation = (new Expression(expression)).evaluate(); if (evaluation.isNothing()) { return Maybe.nothingBecause("invalid expression: " + expression); return new Maybe<>(String.format(locale, format, result)); return Maybe.nothingBecause("invalid format: " + format);
/** * * @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; } } }
/** * * @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; } } }