/** * Returns the case canonical version of the given string. */ public static String caseCanonicalize(String s) { for (int i = 0, n = s.length(); i < n; ++i) { char ch = s.charAt(i); char cu = caseCanonicalize(ch); if (cu != ch) { StringBuilder sb = new StringBuilder(s); sb.setCharAt(i, cu); while (++i < n) { sb.setCharAt(i, caseCanonicalize(s.charAt(i))); } return sb.toString(); } } return s; }
if (flags.indexOf('i') >= 0) { Set<CharRanges> options = new LinkedHashSet<CharRanges>(); options.add(CaseCanonicalize.expandToAllMatched(ranges)); options.add(CaseCanonicalize.reduceToMinimum(ranges));
@Override public boolean isCaseSensitive() { // We could test // !ranges.equals(CaseCanonicalize.expandToAllMatched(ranges)) // but we get better optimizations by leaving the 'i' flag on in most // cases. // Check whether skipping all the character groups that are known // case-insensitive leaves us with something that matches the above // definition. CharRanges withoutNamedGroups = decompose().ranges; return !withoutNamedGroups.equals( CaseCanonicalize.expandToAllMatched(withoutNamedGroups)); }
if (flags.indexOf('i') >= 0) { Set<CharRanges> options = new LinkedHashSet<>(); options.add(CaseCanonicalize.expandToAllMatched(ranges)); options.add(CaseCanonicalize.reduceToMinimum(ranges));
@Override public boolean isCaseSensitive() { // We could test // !ranges.equals(CaseCanonicalize.expandToAllMatched(ranges)) // but we get better optimizations by leaving the 'i' flag on in most // cases. // Check whether skipping all the character groups that are known // case-insensitive leaves us with something that matches the above // definition. CharRanges withoutNamedGroups = decompose().ranges; return !withoutNamedGroups.equals( CaseCanonicalize.expandToAllMatched(withoutNamedGroups)); }
@Override public RegExpTree simplify(String flags) { int n = text.length(); if (n == 0) { return Empty.INSTANCE; } if (flags.indexOf('i') >= 0) { String canonicalized = CaseCanonicalize.caseCanonicalize(text); if (!text.equals(canonicalized)) { return new Text(canonicalized); } } return this; }
/** * Returns the case canonical version of the given string. */ public static String caseCanonicalize(String s) { for (int i = 0, n = s.length(); i < n; ++i) { char ch = s.charAt(i); char cu = caseCanonicalize(ch); if (cu != ch) { StringBuilder sb = new StringBuilder(s); sb.setCharAt(i, cu); while (++i < n) { sb.setCharAt(i, caseCanonicalize(s.charAt(i))); } return sb.toString(); } } return s; }
@Override public RegExpTree simplify(String flags) { int n = text.length(); if (n == 0) { return Empty.INSTANCE; } if (flags.indexOf('i') >= 0) { String canonicalized = CaseCanonicalize.caseCanonicalize(text); if (!text.equals(canonicalized)) { return new Text(canonicalized); } } return this; }