rangr

Manage ranges and overlaps between them

Usage no npm install needed!

<script type="module">
  import rangr from 'https://cdn.skypack.dev/rangr';
</script>

README

logo

build status coverage status npm version language

rangr is a tool to manage ranges and sets. It's inspired from the LeetCode's Merge Interval problem.

⚠️ NOT ready for production use.

Usage

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]

Features

Array output

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 ] ]

Iterable output

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 }

Support for ESM and CommonJS

rangr supports both ECMAScript Modules and CommonJS using Conditional Exports provided by Node.js.

CommonJS

const Rangr = require('rangr');

ESM

import Rangr from 'rangr';

Contributions

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! 🙌🏽

Install

npm i rangr

Test

npm test

License

MIT License