@nxtedition/ranges
v1.0.1
Published
Merge and subtract numeric ranges. Useful for byte ranges, time ranges, and similar interval arithmetic.
Keywords
Readme
@nxtedition/ranges
Merge and subtract numeric ranges. Useful for byte ranges, time ranges, and similar interval arithmetic.
Install
npm install @nxtedition/rangesUsage
Merge overlapping ranges
import { merge } from '@nxtedition/ranges'
merge([
[10, 20],
[15, 30],
[50, 60],
])
// [[10, 30], [50, 60]]Subtract ranges
import { subtract } from '@nxtedition/ranges'
subtract(
[[0, 100]],
[
[10, 20],
[30, 40],
],
)
// [[0, 10], [20, 30], [40, 100]]API
merge(ranges: Range[]): readonly Range[]
Sorts and merges overlapping or adjacent ranges. Returns a new array of non-overlapping ranges. Invalid ranges (empty, reversed, non-finite) are filtered out.
subtract(a: readonly Range[], b: readonly Range[]): readonly Range[]
Subtracts ranges b from ranges a. Returns the remaining intervals. Does not modify the input arrays.
Range
type Range = readonly [start: number, end: number]Ranges are half-open intervals: start is inclusive, end is exclusive.
License
MIT
