public String value(MatchResult mr) { TextBuffer dest = Replacer.wrap(new StringBuilder(mr.length())); appendSubstitution(mr, dest); return dest.toString(); }
public String value(MatchResult mr) { TextBuffer dest = Replacer.wrap(new StringBuilder(mr.length())); appendSubstitution(mr, dest); return dest.toString(); }
public String value(MatchResult mr) { TextBuffer dest = Replacer.wrap(new StringBuilder(mr.length())); appendSubstitution(mr, dest); return dest.toString(); }
public void appendSubstitution(MatchResult match, TextBuffer dest) { String translated = match.group(0); if(translated == null) { return; } translated = translated.toLowerCase(); translated = vocabulary.get(translated); if(translated == null) { dest.append(match.group(0)); return; } char[] chars = translated.toCharArray(); if(Category.Lu.contains(match.charAt(0))) chars[0] = Character.toUpperCase(chars[0]); if(match.length() > 1 && Category.Lu.contains(match.charAt(1))) { for (int i = 1; i < chars.length; i++) { chars[i] = Character.toUpperCase(chars[i]); } } dest.append(chars, 0, chars.length); } }
/** * Returns a matcher for a match result (in a performance-friendly way). * <code>groupId</code> parameter specifies which group is a target. * * @param groupId which group is a target; either positive integer(group id), or one of MatchResult.MATCH,MatchResult.PREFIX,MatchResult.SUFFIX,MatchResult.TARGET. */ public Matcher matcher(MatchResult res, int groupId) { Matcher m = new Matcher(this); if (res instanceof Matcher) { m.setTarget((Matcher) res, groupId); } else { m.setTarget(res.targetChars(), res.start(groupId) + res.targetStart(), res.length(groupId)); } return m; }
/** * Returns a matcher for a match result (in a performance-friendly way). * <code>groupId</code> parameter specifies which group is a target. * * @param groupId which group is a target; either positive integer(group id), or one of MatchResult.MATCH,MatchResult.PREFIX,MatchResult.SUFFIX,MatchResult.TARGET. */ public Matcher matcher(MatchResult res, int groupId) { Matcher m = new Matcher(this); if (res instanceof Matcher) { m.setTarget((Matcher) res, groupId); } else { m.setTarget(res.targetChars(), res.start(groupId) + res.targetStart(), res.length(groupId)); } return m; }
@Override public void appendSubstitution(MatchResult match, TextBuffer dest) { if(match instanceof Matcher) { wordMatcher.setTarget((Matcher)match, 1); } else { wordMatcher.setTarget(match.targetChars(), match.start(1) + match.targetStart(), match.length(1)); } while (wordMatcher.find()) { wordMatcher.getGroup(MatchResult.PREFIX, dest); dest.append(lookup(wordMatcher.group())); wordMatcher.setTarget(wordMatcher, MatchResult.SUFFIX); } wordMatcher.getGroup(MatchResult.TARGET, dest); } }