public static void printRange()

in tools/SymbolsRange.java [262:314]


    public static void printRange(RangeType rangeType, Formatter formatter, Predicate predicate, String name) {
        StringBuilder result = new StringBuilder(formatter.definition(name + rangeType.suffix()));
        result.append(formatter.start());

        boolean hasPrevious = false;

        int max = rangeType.maxCodePoint();

        int i = 0;
        int firstAlpha = -1;
        int lastAlpha = -1;

        while (i <= max) {

            while(i <= max) {
                if (predicate.test(i)) {
                    firstAlpha = i;
                    break;
                }
                i++;
            }

            while(i <= max) {
                boolean lastSymbol = i == max;
                if(!predicate.test(i) || lastSymbol) {
                    lastAlpha = lastSymbol ? i : i-1;

                    if (firstAlpha > firstAlpha) {
                        throw new RuntimeException(firstAlpha + " > " + lastAlpha);
                    }

                    if (hasPrevious) {
                        result.append(formatter.separator());
                    }

                    if (lastAlpha != firstAlpha) {
                        result.append(formatter.range(firstAlpha, lastAlpha));
                        hasPrevious = true;
                    } else {
                        result.append(formatter.item(firstAlpha));
                        hasPrevious = true;
                    }
                    break;

                }
                i++;
            }
            i++;
        }

        result.append(formatter.end()).append(',');
        System.out.println(result.toString());
    }