Interface ReadonlyRanges

Query utilities for a list of ranges. Ranges are expected to be start, end pairs where no two ranges overlap or touch. All ranges are in incremental order.

interface ReadonlyRanges {
    empty: boolean;
    ranges: ArrayLike<Range>;
    [iterator](): IterableIterator<Range>;
    getRangeAt(value: number, tolerance?: number): null | Range;
    getRangeContaining(from: number, to: number, tolerance?: number): null | Range;
    getRangesWithin(from: number, to: number, tolerance?: number): Range[];
}

Hierarchy

  • Iterable<Range>
    • ReadonlyRanges

Implemented by

Properties

empty: boolean

Returns true if there are zero ranges.

ranges: ArrayLike<Range>

The ranges array like this reader encapsulates. Ranges are [start, end] tuples, they will always be ordered, never touch, and never overlap.

Methods

  • Returns IterableIterator<Range>

  • Returns the range at the given value, or null if all ranges are outside the given tolerance. Range values are considered inclusive. That is, a ReadonlyRanges with [0, 1] will return [0, 1] for value 1.

    Parameters

    • value: number

      The value to compare to current ranges.

    • Optionaltolerance: number

      The tolerance the value may be outside a range and still considered to be within. Default: 0

    Returns null | Range

  • Returns the range that includes the entire from-to span, within a given tolerance.

    Range values are considered inclusive. That is, a ReadonlyRanges with [0, 2] will return [0, 2] for getRangeContaining(2, 2) or getRangeContaining(0, 0).

    from does not need to be lesser than to.

    Parameters

    • from: number
    • to: number
    • Optionaltolerance: number

    Returns null | Range

  • Returns all ranges where at least part of the range is within the given from-to span.

    from does not need to be lesser than to.

    Parameters

    • from: number
    • to: number
    • Optionaltolerance: number

    Returns Range[]