1.0.1 • Published 2 years ago

nv-buf-range-pair v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

nv-buf-range-pair

  • just a array of size 2 : start,end
  • for big size src using, pure index operation

install

  • npm install nv-buf-range-pair

usage

    const {func,Range} = require("nv-buf-range-pair");

example

functions

    var pair = [3,8]

get

    > func._get(pair,0)
    3
    > func._get(pair,1)
    4
    > func._get(pair,4)
    7
    > 

length

    > func._len(pair)
    5
    > 

slice

    > func._slice(pair,1,3)
    [ 4, 6 ]
    > 

split_at

    > func._split_at(pair,1)
    [ [ 3, 4 ], [ 4, 8 ] ]
    > func._split_at(pair,3)
    [ [ 3, 6 ], [ 6, 8 ] ]
    >

split_at_idxary

    > var pair = [3,14]
    > func._split_at_idxary(pair,[2,6,8])
    [ [ 3, 5 ], [ 5, 9 ], [ 9, 11 ] ]
    > 

concat two

    > func._concat_two([3,5],[5,10])
    [ 3, 10 ]
    > 

concat many range-pairs

    > func._concat([[3,5],[5,10],[10,17],[20,33],[35,40],[40,46],[50,100]])
    [ [ 3, 17 ], [ 20, 33 ], [ 35, 46 ], [ 50, 100 ] ]
    > 
    > func._concat([[3,5],[5,10],[10,17],[20,33],[35,40],[40,46],[46,100]])
    [ [ 3, 17 ], [ 20, 33 ], [ 35, 100 ] ]

pop(end move backward) push(end move forward)

    > func._pop([3,8])
    [ 3, 7 ]
    > func._pop([3,8],2)
    [ 3, 6 ]
    > func._push([3,8])
    [ 3, 9 ]
    > func._push([3,8],3)
    [ 3, 11 ]

shift(start move forward) unshift(start move backward)

    > func._shift([3,8])
    [ 4, 8 ]
    > func._shift([3,8],4)
    [ 7, 8 ]
    > func._unshift([3,8])
    [ 2, 8 ]
    > func._unshift([3,8],1)
    [ 2, 8 ]
    > func._unshift([3,8],2)
    [ 1, 8 ]
    > 

remove one before/after/at

    > func._rm_one_at([3,8],1)
    [ [ 3, 4 ], [ 5, 8 ] ]
    > 
    > func._rm_one_at([3,8],0)
    [ [ 3, 3 ], [ 4, 8 ] ]
    > 
    > func._rm_one_aft([3,8],0)
    [ [ 3, 4 ], [ 5, 8 ] ]
    > func._rm_one_aft([3,8],1)
    [ [ 3, 5 ], [ 6, 8 ] ]
    > func._rm_one_bfr([3,8],1)
    [ [ 3, 3 ], [ 4, 8 ] ]
    > func._rm_one_bfr([3,8],2)
    [ [ 3, 4 ], [ 5, 8 ] ]
    > func._rm_one_bfr([3,8],3)
    [ [ 3, 5 ], [ 6, 8 ] ]
    > 

splice(pair,ridx/*relative index*/,del_cnt=1,push_cnt=0)

    > func._splice(
          [3,17],
           2 /*from relative index 2 which is 5*/,
           1 /*delete one(5) */,
           3 /*add 3 17,18,19*/
    )
    [ [ 3, 5 ], [ 6, 20 ] ]
    > 

class Range

  • all methods is deepcopy, includes splice
      > Range
      [class Range extends Array] {
        from_pair: [Function: from_pair],
        ALGN_SIZE: 2
      }
      > 

    var rng = new Range(3,8)

    /*
    > rng
    Range(2) [ 3, 8 ]
    >
    */

get

    > rng.get(0)
    3
    > rng.get(1)
    4
    > rng.get(2)
    5
    > rng.get(4)
    7
    >

length

 > rng.length_
 5
 >

slice

 > rng.slice(1,3)
 Range(2) [ 4, 6 ]
 >

split_at

    > rng.split_at(1)
    [ Range(2) [ 3, 4 ], Range(2) [ 4, 8 ] ]
    > rng.split_at(3)
    [ Range(2) [ 3, 6 ], Range(2) [ 6, 8 ] ]
    >
    >

split_at_idxary

    var rng = new Range(3,14)
    > rng.split_at_idxary([2,6,8])
    [ Range(2) [ 3, 5 ], Range(2) [ 5, 9 ], Range(2) [ 9, 11 ] ]
    >

clone

  var rng = new Range(3,5)
  > rng.clone()
  Range(2) [ 3, 5 ]
  >

concat many range-pairs

   var rng = new Range(3,5)
    > rng.concat([[5,10],[10,17],[20,33],[35,40],[40,46],[50,100]])
    [
      Range(2) [ 3, 17 ],
      Range(2) [ 20, 33 ],
      Range(2) [ 35, 46 ],
      Range(2) [ 50, 100 ]
    ]
    >
    > rng
    Range(2) [ 3, 5 ]
    >
    > rng.concat([[5,10],[10,17],[20,33],[35,40],[40,46],[46,100]])
    [ Range(2) [ 3, 17 ], Range(2) [ 20, 33 ], Range(2) [ 35, 100 ] ]
    >

pop(end move backward) push(end move forward)

   var rng = new Range(3,8)

    > rng.pop()
    Range(2) [ 3, 7 ]
    > rng
    Range(2) [ 3, 8 ]
    > rng.pop(2)
    Range(2) [ 3, 6 ]
    > rng
    Range(2) [ 3, 8 ]
    >
    > rng.push()
    Range(2) [ 3, 9 ]
    > rng.push(3)
    Range(2) [ 3, 11 ]
    > rng
    Range(2) [ 3, 8 ]
    >

shift(start move forward) unshift(start move backward)

    var rng = new Range(3,8)
    > rng.shift()
    Range(2) [ 4, 8 ]
    > rng.shift(4)
    Range(2) [ 7, 8 ]
    > rng.unshift()
    Range(2) [ 2, 8 ]
    > rng.unshift(2)
    Range(2) [ 1, 8 ]
    > rng
    Range(2) [ 3, 8 ]
    >

remove one before/after/at

    var rng = new Range(3,8)
    > rng.rm_one_at(1)
    [ Range(2) [ 3, 4 ], Range(2) [ 5, 8 ] ]
    > rng
    Range(2) [ 3, 8 ]
    > rng.rm_one_aft(1)
    [ Range(2) [ 3, 5 ], Range(2) [ 6, 8 ] ]
    > rng
    Range(2) [ 3, 8 ]
    >
    > rng.rm_one_bfr(1)
    [ Range(2) [ 3, 3 ], Range(2) [ 4, 8 ] ]
    > rng
    Range(2) [ 3, 8 ]
    >

splice(pair,ridx/*relative index*/,del_cnt=1,push_cnt=0)

    var rng = new Range(3,17)
    > rng.splice(2,1,3)
    [ Range(2) [ 3, 5 ], Range(2) [ 6, 20 ] ]
    > rng
    Range(2) [ 3, 17 ]
    >

METHODS

        rng.clone                 rng.concat                rng.constructor
        rng.ei_                   rng.get                   rng.length_
        rng.pop                   rng.push                  rng.rm_one_aft
        rng.rm_one_at             rng.rm_one_bfr            rng.shift
        rng.si_                   rng.slice                 rng.splice
        rng.split_at              rng.split_at_idxary       rng.unshift

API

        {
          func: {
            is_ordered_idxary: [Function: is_ordered_idxary],
            is_ordered_pairs: [Function: is_ordered_pairs],
            _get: [Function: _get],
            _len: [Function: _len],
            _slice: [Function: _slice] { verify: [Function (anonymous)] },
            _split_at: [Function: _split_at] { verify: [Function (anonymous)] },
            _split_at_idxary: [Function: _split_at_idxary] { verify: [Function (anonymous)] },
            _concat_two: [Function: _concat_two] { verify: [Function (anonymous)] },
            _concat: [Function: _concat],
            _pop: [Function: _pop],
            _push: [Function: _push],
            _shift: [Function: _shift],
            _unshift: [Function: _unshift],
            _rm_one_at: [Function: _rm_one_at],
            _rm_one_bfr: [Function: _rm_one_bfr],
            _rm_one_aft: [Function: _rm_one_aft],
            _splice: [Function: _splice]
          }
        }

LICENSE

  • ISC