1.0.1 • Published 2 years ago
nv-buf-range-pair v1.0.1
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