public String translate(Symbol symbol) { if (getTranslation(symbol.getType()) != null) { return getTranslation(symbol.getType()).toTarget(this, symbol); } else { StringBuilder result = new StringBuilder(symbol.getContent()); for (Symbol child: symbol.getChildren()) { result.append(translate(child)); } return result.toString(); } }
private Maybe<String> parseVariableValue(Parser parser, Symbol next) { SymbolType close = next.getType().closeType(); if (close == SymbolType.Empty) return Maybe.noString; return parser.parseToAsString(close); }
private Maybe<String> parseVariableValue(Parser parser, Symbol next) { SymbolType close = next.getType().closeType(); if (close == SymbolType.Empty) return Maybe.noString; return parser.parseToAsString(close); }
public String translate(Symbol symbol) { if (getTranslation(symbol.getType()) != null) { return getTranslation(symbol.getType()).toTarget(this, symbol); } else { StringBuilder result = new StringBuilder(symbol.getContent()); for (Symbol child: symbol.getChildren()) { result.append(translate(child)); } return result.toString(); } }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol body = parser.parseToIgnoreFirst(current.getType()); if (body.getChildren().isEmpty()) return Symbol.nothing; if (!parser.getCurrent().isType(current.getType())) return Symbol.nothing; return new Maybe<>(current.add(body)); } }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol body = parser.parseToIgnoreFirst(current.getType()); if (body.getChildren().isEmpty()) return Symbol.nothing; if (!parser.getCurrent().isType(current.getType())) return Symbol.nothing; return new Maybe<>(current.add(body)); } }
if (!TextUtils.isEmpty(symData)) { rawResult.setContents(symData); rawResult.setBarcodeFormat(BarcodeFormat.getFormatById(sym.getType())); break;
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { SymbolType type = current.getType(); String literal = parser.parseLiteral(closeType()); if (parser.atEnd()) return Symbol.nothing; return new Maybe<>(new Symbol(type, literal)); } }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { SymbolType type = current.getType(); String literal = parser.parseLiteral(closeType()); if (parser.atEnd()) return Symbol.nothing; return new Maybe<>(new Symbol(type, literal)); } }
/** * * @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; } } }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol next = parser.moveNext(1); if (next.isType(WikiWord.symbolType)) { return new Maybe<>(current.add(next)); } if (next.isType(Alias.symbolType)) { Maybe<Symbol> alias = next.getType().getWikiRule().parse(next, parser); if (!alias.isNothing()) return new Maybe<>(current.add(alias.getValue())); } return Symbol.nothing; } }
@Override public Maybe<Symbol> parse(Symbol current, Parser parser) { Symbol next = parser.moveNext(1); if (next.isType(WikiWord.symbolType)) { return new Maybe<>(current.add(next)); } if (next.isType(Alias.symbolType)) { Maybe<Symbol> alias = next.getType().getWikiRule().parse(next, parser); if (!alias.isNothing()) return new Maybe<>(current.add(alias.getValue())); } return Symbol.nothing; } }