Skip to main content

namespace IndexRange

A flexible range specification for numeric indices. If a start or end is defined, a tuple can be used where the second item is a boolean indicating whether that end is inclusive or exclusive. An IndexRange can have one of the following forms:

  • { amount: number }
  • { start: number }
  • { start: number, amount: number }
  • { start: number, end: number }
  • { start: number, end: [number, boolean] }
  • { start: [number, boolean] }
  • { start: [number, boolean], amount: number }
  • { start: [number, boolean], end: number }
  • { start: [number, boolean], end: [number, boolean] }
  • { end: number }
  • { end: [number, boolean] }

Companion type: IndexRange

Functions

getIndexRangeIndices

Returns, given the range IndexRange, a normalized tuple containing the start index, and optionally an end index.

Definition

function getIndexRangeIndices(range: IndexRange): [number, number | undefined];

Parameters

NameTypeDescription
rangeIndexRangethe IndexRange to use

getIndicesFor

Returns, given the range IndexRange, and a target maximum length, the actual index range. This can be one of three options: - 'empty': there are no elements within the range - 'all': all elements are within the range - [start: number, end: number]: an inclusive range of element indices within the given range

Definition

function getIndicesFor(range: IndexRange, length: number): [number, number] |'empty'| 'all';

Parameters

NameTypeDescription
rangeIndexRangethe IndexRange to use
lengthnumberthe target maximum length