https://github.com/jhk1090/range-admin
Range Admin - Effectively Managing Range
https://github.com/jhk1090/range-admin
commonjs compare ecmascript javascript range typescript util
Last synced: about 2 months ago
JSON representation
Range Admin - Effectively Managing Range
- Host: GitHub
- URL: https://github.com/jhk1090/range-admin
- Owner: jhk1090
- License: mit
- Created: 2024-04-04T13:37:49.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-06T01:30:48.000Z (about 2 years ago)
- Last Synced: 2025-09-26T07:56:43.456Z (9 months ago)
- Topics: commonjs, compare, ecmascript, javascript, range, typescript, util
- Language: TypeScript
- Homepage: https://npmjs.com/package/range-admin
- Size: 48.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Range Admin - Effectively Managing Range



```js
import { Range } from "range-admin"
(new Range(1, 10)).isEqual(new Range(1, 10)) // true
(new Range(1, 10)).compare(new Range(5, 13)) // "OVERLAP"
(new Range(1, 10)).findCommon(new Range(5, 10)) // new Range(5, 10)
```
```sh
# npm
npm install range-admin
# yarn
yarn add range-admin
```
* Github Repository: https://github.com/jhk1090/range-admin
* NPM Library: https://npmjs.com/package/range-admin
---
* [Feature](#feature)
* [Range](#range)
* [isEqual](#isequalranges-range)
* [isDisjoint](#isdisjointranges-range)
* [isSubset](#issubsetranges-range)
* [isSuperset](#issupersetranges-range)
* [isAdjacent](#isadjacentranges-range)
* [makeRangeArray](#makerangearrayrange-range--number-number-step-number)
* [Contribution](#contribution)
# Feature
## Range
```js
new Range(1, 10)
```
* ```toString()``` - Returns string representation of the range: start~end
* [```toArray(step: number)```](#toarraystep-number) - Returns array based on the range
* ```isEqual(otherRange: Range)``` - Check if two ranges are equal
* ```isDisjoint(otherRange: Range)``` - Check if two ranges are disjoint (no relationship)
* ```isSubsetOf(otherRange: Range)``` - Check if range is subset of otherRange (range is contained in otherRange)
* ```isOverlap(otherRange: Range)``` - Check if two ranges are overlapped with each other
* ```isAdjacent(otherRange: Range)``` - Check if two ranges are adjacent
* [```compare(otherRange: Range)```](#compareotherrange-range) - Compare relationship with other range.
* [```findCommon(otherRange: Range)```](#findcommonotherrange-range) - Find common part of the range with other range.
### toArray(step: number)
```js
(new Range(1, 11)).toArray() // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(new Range(0, 1001)).toArray(2) // [0, 2, 4, 6, ..., 998, 1000]
```
### compare(otherRange: Range)
```js
(new Range(3, 5)).compare(new Range(1, 4)) // "OVERLAP"
(new Range(3, 5)).compare(new Range(1, 5)) // "SUBSET"
```
The types of relationship are as follows: "equal", "subset", "superset", "disjoint", "overlap"
### findCommon(otherRange: Range)
```js
(new Range(3, 5)).compare(new Range(1, 4)) // new Range(3, 4)
(new Range(3, 5)).compare(new Range(9, 10)) // null
```
## isEqual(...ranges: Range[])
```js
const range1 = new Range(1, 3)
const range2 = new Range(2, 5)
isEqual(range1, range1, range1) // true
isEqual(range2, range1, range1) // false
```
Check if all the ranges are equal.
## isDisjoint(...ranges: Range[])
```js
const range1 = new Range(1, 3)
const range2 = new Range(3, 5)
isDisjoint(range1, range2, new Range(9, 10)) // true
isDisjoint(range1, range1, new Range(9, 10)) // false
```
Check if all the ranges are disjoint.
## isSubset(...ranges: Range[])
```js
isSubset(new Range(1, 3), new Range(1, 8)) // false (2nd range is superset of 1st range)
isSubset(new Range(1, 100), new Range(1, 10), new Range(1, 2)) // true
```
Check if the range is subset of its preceding range. (e.g. 2nd range should be subset of the 1st range)\
Opposite with [```isSuperset```](#issupersetranges-range).
## isSuperset(...ranges: Range[])
```js
isSuperset(new Range(1, 3), new Range(1, 8)) // false (2nd range is superset of 1st range)
isSuperset(new Range(1, 100), new Range(1, 10), new Range(1, 2)) // true
```
Check if the range is superset of its following range. (e.g. 2nd range should be superset of the 1st range)\
Opposite with [```isSubset```](#issubsetranges-range).
## isAdjacent(...ranges: Range[])
```js
isAdjacent(new Range(1, 2), new Range(2, 3), new Range(3, 10)) // true
isAdjacent(new Range(1, 2), new Range(4, 5), new Range(5, 6)) // false
```
Check if all the ranges are adjacent with each other.
## makeRangeArray(range: Range | [number, number], step?: number)
```js
makeRangeArray([0, 11], 2) // [0, 2, 4, 6, 8, 10]
makeRangeArray(new Range(0, 11), 2) // [0, 2, 4, 6, 8, 10]
// equivalent of new Range(0, 11).toArray(2)
```
Make array of range.
# Contribution
```sh
# build
npm run build
# build (using nodemon)
npm run dev
# test (using jest)
npm test
```