Merges codepoint ranges. @param rss ranges @return merged ranges
(final int[][]... rss)
| 115 | * @return merged ranges |
| 116 | */ |
| 117 | private static int[][] merge(final int[][]... rss) { |
| 118 | final ArrayList<int[]> ranges = new ArrayList<>(); |
| 119 | for(final int[][] rs : rss) Collections.addAll(ranges, rs); |
| 120 | ranges.sort(CMP); |
| 121 | for(int i = 0; i < ranges.size(); i++) { |
| 122 | final int[] rng = ranges.get(i); |
| 123 | while(i + 1 < ranges.size()) { |
| 124 | final int[] rng2 = ranges.get(i + 1); |
| 125 | if(rng2[0] - rng[1] > 1) break; |
| 126 | rng[1] = rng2[1]; |
| 127 | ranges.remove(i + 1); |
| 128 | } |
| 129 | } |
| 130 | return ranges.toArray(int[][]::new); |
| 131 | } |
| 132 | |
| 133 | /** |
| 134 | * Inverts code point ranges. |