private static int complexityWordFoldedHelper(CharRanges ranges) { int complexity = DecomposedCharset.complexity(ranges); if (ranges.containsAll(WORD_CHARS)) { complexity = Math.min( complexity, 1 + DecomposedCharset.complexity(ranges.difference(WORD_CHARS))); } if (ranges.containsAll(INVERSE_WORD_CHARS)) { complexity = Math.min( complexity, 1 + DecomposedCharset.complexity( ranges.difference(INVERSE_WORD_CHARS))); } return complexity; }
private static int complexityWordFoldedHelper(CharRanges ranges) { int complexity = DecomposedCharset.complexity(ranges); if (ranges.containsAll(WORD_CHARS)) { complexity = Math.min( complexity, 1 + DecomposedCharset.complexity(ranges.difference(WORD_CHARS))); } if (ranges.containsAll(INVERSE_WORD_CHARS)) { complexity = Math.min( complexity, 1 + DecomposedCharset.complexity( ranges.difference(INVERSE_WORD_CHARS))); } return complexity; }
private DecomposedCharset decompose(CharRanges ranges, boolean inverted) { StringBuilder namedGroups = new StringBuilder(); CharRanges rangesInterIeExplicits = ranges.intersection(ieExplicits); while (true) { char groupName = 0; CharRanges simplest = null; int minComplexity = DecomposedCharset.complexity(ranges); for (Map.Entry<Character, CharRanges> namedGroup : NAMED_CHAR_GROUPS.entrySet()) { CharRanges group = namedGroup.getValue(); if (ranges.containsAll(group)) { CharRanges withoutGroup = ranges.difference(group).union( rangesInterIeExplicits); int complexity = DecomposedCharset.complexity(withoutGroup); if (complexity < minComplexity) { simplest = withoutGroup; groupName = namedGroup.getKey().charValue(); minComplexity = complexity; } } } if (simplest != null) { namedGroups.append('\\').append(groupName); ranges = simplest; } else { break; } } return new DecomposedCharset(inverted, ranges, namedGroups.toString()); }
private DecomposedCharset decompose(CharRanges ranges, boolean inverted) { StringBuilder namedGroups = new StringBuilder(); CharRanges rangesInterIeExplicits = ranges.intersection(ieExplicits); while (true) { char groupName = 0; CharRanges simplest = null; int minComplexity = DecomposedCharset.complexity(ranges); for (Map.Entry<Character, CharRanges> namedGroup : NAMED_CHAR_GROUPS.entrySet()) { CharRanges group = namedGroup.getValue(); if (ranges.containsAll(group)) { CharRanges withoutGroup = ranges.difference(group).union( rangesInterIeExplicits); int complexity = DecomposedCharset.complexity(withoutGroup); if (complexity < minComplexity) { simplest = withoutGroup; groupName = namedGroup.getKey().charValue(); minComplexity = complexity; } } } if (simplest != null) { namedGroups.append('\\').append(groupName); ranges = simplest; } else { break; } } return new DecomposedCharset(inverted, ranges, namedGroups.toString()); }