0.1.1 • Published 8 years ago

rangerjs v0.1.1

Weekly downloads
3
License
ISC
Repository
github
Last release
8 years ago

ranger.js

A lightweight JS library for defining an array of ranges. Stores the ranges in an array of range objects.

note: upper limit is always non-inclusive

var ranger = require('rangerjs');
var newRanger = new ranger();
var existingRanger = new ranger(array);

####ranger.Range(Type) //Returns: { start: Type, end: Type
}

In order to save the array to db (in this case MongoDB), use the following Schema type:

{
    ...
    ranges: {
        type: ranger.Range(Type), //Type can be Number, Date, etc.
        get: function(data) {
            return new ranger(data);
        },
        set: function(data) {
            return data.ranges || data;
        }
    }
}

Keep in mind that MongoDB does not listen for changes in individual array elements so after performing an operation (such as addRange or removeRange) make sure to markModified('ranges')

####newRanger.addRange(from, to); newRanger.addRange(1, 4);

####newRanger.removeRange(from, to); newRanger.removeRange(2, 3);

####newRanger.check(value); newRanger.check(1); //true newRanger.check(2); //false newRanger.check(3); //true newRanger.check(4); //false newRanger.check(5); //false

####newRanger.checkRange(from, to); newRanger.checkRange(1, 5); //false newRanger.checkRange(2, 4); //false newRanger.checkRange(2, 3); //false newRanger.checkRange(3, 4); //true

####newRanger.nextRange(now); newRanger.nextRange(1); // { start: 1, end: 2 } newRanger.nextRange(2); // { start: 3, end: 4 } newRanger.nextRange(5); // undefined newRanger.nextRange(); // undefined

####newRanger.addRecuringRange(from, to, interval, count, finish); Either count (of reptitions) or finish (final upper limit) must be set. If using finish, set count to null or < 1.

//These will create the same ranges:
newRanger.addRecuringRange(1, 2, 2, 3);
newRanger.addRecuringRange(1, 2, 2, 0, 7);
//Result:
newRanger.check(1); //true
newRanger.check(2); //false
newRanger.check(3); //true
newRanger.check(4); //false
newRanger.check(5); //true
newRanger.check(6); //false
newRanger.check(7); //false

####newRanger.removeRecuringRange(from, to, interval, count, finish); Either count (of reptitions) or finish (final upper limit) must be set. If using finish, set count to null or < 1.

newRanger.addRange(1, 8);
//These will remove the same ranges:
newRanger.removeRecuringRange(1, 2, 2, 3);
newRanger.removeRecuringRange(1, 2, 2, 0, 7);
//Result:
newRanger.check(1); //false
newRanger.check(2); //true
newRanger.check(3); //false
newRanger.check(4); //true
newRanger.check(5); //false
newRanger.check(6); //true
newRanger.check(7); //true
0.1.1

8 years ago

0.1.0

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago