rangr is a tool to manage ranges and sets. It's inspired from the LeetCode's Merge Interval problem.
import Rangr from 'rangr';
const range: Rangr = new Rangr([ [1,3], [2,6], [8,10], [15,18] ]);
console.log(range.toString());
// [1,6],[8,10],[15,18]
range.add([ [ 10, 11 ], [11, 20] ]);
console.log(range.toString());
// [1,6],[8,20]
To get ranges as an array, use .toArray()
method provided.
Example:
const range: Rangr = new Rangr([ [1,3], [2,6] ]);
const arr = range.toArray(); // [ [ 1, 6 ] ]
To get ranges as an iterable, use .toIterable()
method provided.
Example:
const range: Rangr = new Rangr([ [1,3], [2,6] ]);
const rangeIterator = range.toIterable();
rangeIterator.next(); // { value: [ 1, 6 ], done: false }
rangeIterator.next(); // { value: undefined, done: true }
rangr supports both ECMAScript Modules and CommonJS using Conditional Exports provided by Node.js.
const Rangr = require('rangr');
import Rangr from 'rangr';
The package is not very performant in managing th ranges and lacks a rich API. Contributions in the form of issues and PRs are welcome! 🙌🏽
npm i rangr
npm test