countjs

1.2.0 • Public • Published

CountJS

Build Status

Count items and compare them against a reference

Installation

Simply install it via NPM (npm install countjs) and require it in your code:

var Counter = require('countjs')
 
var c = new Counter()

Usage

countjs is relatively simple -- just instantiate a counter and keep adding stuff to it:

var c = new Counter()
 
c.add('a')
c.add('a')
c.add('b')

Then you can get how many items are there in the counter:

c.get('a') // 2
c.get('b') // 1
c.get() // {a: 2, b: 1}

You can also specify a custom quantity to add:

c.add('a', {qty: 3}) // 2
c.get('a') // 3

And create a diff between counters:

var c1 = new Counter({a: 1})
var c2 = new Counter({b: 1})
 
c1.diff(c2) // {a: 1, b: 0}

You can also use "references": if an item has qty X in the reference, then your counter will not be able to add more than X qty of that item:

var ref = {a: 1, b: 2}
var c = new Counter({}, ref)
 
c.add('a') // true
c.add('a') // false
c.add('b', {qty: 3}) // false
c.add('b', {qty: 2}) // true
c.add('c') // false
 
c.get() // {a: 1, b: 2}

You can force the counter to accept the new value:

var ref = {a: 1}
var c = new Counter({}, ref)
 
c.add('a') // true
c.add('a') // false
c.add('a', {qty: 1, force: true}) // true
c.get() // {a: 2}

When using references, you can get a diff between the current counter and the reference. For example:

var ref = {a: 1}
var c = new Counter({}, ref)
 
c.add('a', {qty: 2, force: true}) // true
c.add('b', {qty: 3, force: true}) // true
 
c.diff() // {a: {mine: 2, other: 1, diff: 1}, b: {mine: 3, other: 0, diff: 3}}

Last but not least, you can get a full comparison between counters:

var c1 = new Counter({a: 1, b: 1, d: 3})
var c2 = new Counter({b: 2, c: 1, d: 3})
 
comparison = c1.compare(c2)
// {
//  a: mine 1, other 0
//  b: mine 1, other 2
//  c: mine 0, other 1
//  d: mine 3, other 3
// }

compare is, basically, a #diff() that also includes same values between counters.

Tests

Just run npm test and welcome to Greenland!

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.2.0
    2
    • latest

Version History

Package Sidebar

Install

npm i countjs

Weekly Downloads

7

Version

1.2.0

License

MIT

Last publish

Collaborators

  • odino
  • namshi