Nefarious Pomegranate Magnate
    Have ideas to improve npm?Join in the discussion! »

    drange
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.1 • Public • Published

    drange

    For adding/subtracting sets of range of numbers.

    Build Status Dependency Status codecov

    Usage

    const DRange = require('drange');
    
    let allNums = new DRange(1, 100); //[ 1-100 ]
    let badNums = DRange(13).add(8).add(60,80); //[8, 13, 60-80]
    let goodNums = allNums.clone().subtract(badNums);
    console.log(goodNums.toString()); //[ 1-7, 9-12, 14-59, 81-100 ]
    let randomGoodNum = goodNums.index(Math.floor(Math.random() * goodNums.length));
    

    API

    new DRange([low], [high])

    Creates a new instance of DRange.

    DRange#length

    The total length of all subranges

    DRange#add(low, high)

    Adds a subrange

    DRange#add(drange)

    Adds all of another DRange's subranges

    DRange#subtract(low, high)

    Subtracts a subrange

    DRange#subtract(drange)

    Subtracts all of another DRange's subranges

    DRange#intersect(low, range)

    Keep only subranges that overlap the given subrange

    DRange#intersect(drange)

    Intersect all of another DRange's subranges

    DRange#index(i)

    Get the number at the specified index

    let drange = new DRange()
    drange.add(1, 10);
    drange.add(21, 30);
    console.log(drange.index(15)); // 25

    DRange#numbers()

    Get contained numbers

    let drange = new DRange(1, 4)
    drange.add(6);
    drange.subtract(2);
    console.log(drange.numbers()); // [1, 3, 4, 6]

    DRange#subranges()

    Get copy of subranges

    let drange = new DRange(1, 4)
    drange.add(6, 8);
    console.log(drange.subranges());
    /*
    [
      { low: 1, high: 4, length: 4 },
      { low: 6, high: 8, length: 3 }
    ]
    */

    DRange#clone()

    Clones the drange, so that changes to it are not reflected on its clone

    Install

    npm install drange
    

    Tests

    Tests are written with mocha

    npm test
    

    Integration with TypeScript

    DRange includes TypeScript definitions.

    import * as DRange from "drange";
    const range: DRange = new Drange(2, 5);

    Use dtslint to check the definition file.

    npm install -g dtslint
    npm run dtslint
    

    Install

    npm i drange

    DownloadsWeekly Downloads

    231,240

    Version

    2.0.1

    License

    MIT

    Unpacked Size

    10.7 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar