public SymbolProvider add(SymbolType symbolType) { if (matchesFor(symbolType)) return this; symbolTypes.add(symbolType); for (Matcher matcher: symbolType.getWikiMatchers()) { for (char first: matcher.getFirsts()) { if (!currentDispatch.containsKey(first)) currentDispatch.put(first, new ArrayList<Matchable>()); currentDispatch.get(first).add(symbolType); } } return this; }
public SymbolProvider add(SymbolType symbolType) { if (matchesFor(symbolType)) return this; symbolTypes.add(symbolType); for (Matcher matcher: symbolType.getWikiMatchers()) { for (char first: matcher.getFirsts()) { if (!currentDispatch.containsKey(first)) currentDispatch.put(first, new ArrayList<Matchable>()); currentDispatch.get(first).add(symbolType); } } return this; }
@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; }
public SymbolTypeDecorator(String symbolTypeName, SymbolType baseSymbolType) { super(symbolTypeName); this.baseSymbolType = baseSymbolType; this.wikiRule(baseSymbolType.getWikiRule()); for(Matcher m: baseSymbolType.getWikiMatchers()){ this.wikiMatcher(m); } this.htmlTranslation(this); }
@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; }
public SymbolTypeDecorator(String symbolTypeName, SymbolType baseSymbolType) { super(symbolTypeName); this.baseSymbolType = baseSymbolType; this.wikiRule(baseSymbolType.getWikiRule()); for(Matcher m: baseSymbolType.getWikiMatchers()){ this.wikiMatcher(m); } this.htmlTranslation(this); }