Auto
This commit is contained in:
191
node_modules/hashish/README.markdown
generated
vendored
Normal file
191
node_modules/hashish/README.markdown
generated
vendored
Normal file
@@ -0,0 +1,191 @@
|
||||
Hashish
|
||||
=======
|
||||
|
||||
Hashish is a node.js library for manipulating hash data structures.
|
||||
It is distilled from the finest that ruby, perl, and haskell have to offer by
|
||||
way of hash/map interfaces.
|
||||
|
||||
Hashish provides a chaining interface, where you can do:
|
||||
|
||||
var Hash = require('hashish');
|
||||
|
||||
Hash({ a : 1, b : 2, c : 3, d : 4 })
|
||||
.map(function (x) { return x * 10 })
|
||||
.filter(function (x) { return x < 30 })
|
||||
.forEach(function (x, key) {
|
||||
console.log(key + ' => ' + x);
|
||||
})
|
||||
;
|
||||
|
||||
Output:
|
||||
|
||||
a => 10
|
||||
b => 20
|
||||
|
||||
Some functions and attributes in the chaining interface are terminal, like
|
||||
`.items` or `.detect()`. They return values of their own instead of the chain
|
||||
context.
|
||||
|
||||
Each function in the chainable interface is also attached to `Hash` in chainless
|
||||
form:
|
||||
|
||||
var Hash = require('hashish');
|
||||
var obj = { a : 1, b : 2, c : 3, d : 4 };
|
||||
|
||||
var mapped = Hash.map(obj, function (x) {
|
||||
return x * 10
|
||||
});
|
||||
|
||||
console.dir(mapped);
|
||||
|
||||
Output:
|
||||
|
||||
{ a: 10, b: 20, c: 30, d: 40 }
|
||||
|
||||
In either case, the 'this' context of the function calls is the same object that
|
||||
the chained functions return, so you can make nested chains.
|
||||
|
||||
Methods
|
||||
=======
|
||||
|
||||
forEach(cb)
|
||||
-----------
|
||||
|
||||
For each key/value in the hash, calls `cb(value, key)`.
|
||||
|
||||
map(cb)
|
||||
-------
|
||||
|
||||
For each key/value in the hash, calls `cb(value, key)`.
|
||||
The return value of `cb` is the new value at `key` in the resulting hash.
|
||||
|
||||
filter(cb)
|
||||
----------
|
||||
|
||||
For each key/value in the hash, calls `cb(value, key)`.
|
||||
The resulting hash omits key/value pairs where `cb` returned a falsy value.
|
||||
|
||||
detect(cb)
|
||||
----------
|
||||
|
||||
Returns the first value in the hash for which `cb(value, key)` is non-falsy.
|
||||
Order of hashes is not well-defined so watch out for that.
|
||||
|
||||
reduce(cb)
|
||||
----------
|
||||
|
||||
Returns the accumulated value of a left-fold over the key/value pairs.
|
||||
|
||||
some(cb)
|
||||
--------
|
||||
|
||||
Returns a boolean: whether or not `cb(value, key)` ever returned a non-falsy
|
||||
value.
|
||||
|
||||
update(obj1, [obj2, obj3, ...])
|
||||
-----------
|
||||
|
||||
Mutate the context hash, merging the key/value pairs from the passed objects
|
||||
and overwriting keys from the context hash if the current `obj` has keys of
|
||||
the same name. Falsy arguments are silently ignored.
|
||||
|
||||
updateAll([ obj1, obj2, ... ])
|
||||
------------------------------
|
||||
|
||||
Like multi-argument `update()` but operate on an array directly.
|
||||
|
||||
merge(obj1, [obj2, obj3, ...])
|
||||
----------
|
||||
|
||||
Merge the key/value pairs from the passed objects into the resultant hash
|
||||
without modifying the context hash. Falsy arguments are silently ignored.
|
||||
|
||||
mergeAll([ obj1, obj2, ... ])
|
||||
------------------------------
|
||||
|
||||
Like multi-argument `merge()` but operate on an array directly.
|
||||
|
||||
has(key)
|
||||
--------
|
||||
|
||||
Return whether the hash has a key, `key`.
|
||||
|
||||
valuesAt(keys)
|
||||
--------------
|
||||
|
||||
Return an Array with the values at the keys from `keys`.
|
||||
|
||||
tap(cb)
|
||||
-------
|
||||
|
||||
Call `cb` with the present raw hash.
|
||||
This function is chainable.
|
||||
|
||||
extract(keys)
|
||||
-------------
|
||||
|
||||
Filter by including only those keys in `keys` in the resulting hash.
|
||||
|
||||
exclude(keys)
|
||||
-------------
|
||||
|
||||
Filter by excluding those keys in `keys` in the resulting hash.
|
||||
|
||||
Attributes
|
||||
==========
|
||||
|
||||
These are attributes in the chaining interface and functions in the `Hash.xxx`
|
||||
interface.
|
||||
|
||||
keys
|
||||
----
|
||||
|
||||
Return all the enumerable attribute keys in the hash.
|
||||
|
||||
values
|
||||
------
|
||||
|
||||
Return all the enumerable attribute values in the hash.
|
||||
|
||||
compact
|
||||
-------
|
||||
|
||||
Filter out values which are `=== undefined`.
|
||||
|
||||
clone
|
||||
-----
|
||||
|
||||
Make a deep copy of the hash.
|
||||
|
||||
copy
|
||||
----
|
||||
|
||||
Make a shallow copy of the hash.
|
||||
|
||||
length
|
||||
------
|
||||
|
||||
Return the number of key/value pairs in the hash.
|
||||
Note: use `Hash.size()` for non-chain mode.
|
||||
|
||||
size
|
||||
----
|
||||
|
||||
Alias for `length` since `Hash.length` is masked by `Function.prototype`.
|
||||
|
||||
See Also
|
||||
========
|
||||
|
||||
See also [creationix's pattern/hash](http://github.com/creationix/pattern),
|
||||
which does a similar thing except with hash inputs and array outputs.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
To install with [npm](http://github.com/isaacs/npm):
|
||||
|
||||
npm install hashish
|
||||
|
||||
To run the tests with [expresso](http://github.com/visionmedia/expresso):
|
||||
|
||||
expresso
|
Reference in New Issue
Block a user