Exit Full View

Feather2 / feather2-runtime / src / main / java / uk / co / nickthecoder / feather / runtime / CharRange.java

package uk.co.nickthecoder.feather.runtime;

public class CharRange extends CharProgression {

    public CharRange(char start, char endInclusive) {
        super(start, endInclusive, 1);
    }

    public static final CharRange EMPTY = new CharRange('B', 'A');

    public static CharRange exclusiveRange(char start, char endInclusive) {
        if (endInclusive == Character.MIN_VALUE) return EMPTY;
        return new CharRange(start, (char) (endInclusive - 1));
    }

    public boolean contains(char value) {
        return start <= value && value <= endInclusive;
    }

    public CharProgression backwards() {
        return new CharProgression(endInclusive, start, -1);
    }


    public CharProgression step(int step) {
        if (step > 0) {
            return new CharProgression(start, endInclusive, step);
        }
        if (step < 0) {
            return new CharProgression(endInclusive, start, step);
        }
        throw new IllegalArgumentException("Step cannot be 0");
    }
}