Skip to content

like mori-ext, but mixes in the functions from mori-ext into the prototypes of mori's collections

License

Notifications You must be signed in to change notification settings

roobie/mori-fluent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mori-fluent

mixins for mori's collection prototypes.

What it does is really monkey patching the prototypes of each collection, so that they can be used as "methods".

basic usage

use the value in the mori property of the object returned by the module:

const mori = require('mori-fluent').mori;

After that, you can do as shown in the examples below.

Until these docs are completed, you can see some examples in the mori-ext repository, because it works in the same way, except does not require the function bind syntax.

examples

given that we import as follows:

const mori = require('mori-fluent').mori;
const {
  vector,
  hashMap
} = mori;

we can do stuff fluently

const v1 = vector(1, 2);
const v2 = v1
  .assoc(0, 10)
  .map(mori.inc)
  .conj(5)

console.log(v2.equals(vector(5, 11, 3)));
const map1 = hashMap('foo', vector(8, 9))
               .updateIn(['foo', 1], mori.inc);
console.log(map1.equals(hashMap('foo', vector(8, 10))));

Custom methods

If you want, you can monkey patch the prototypes with your own methods, by using require('mori-fluent').extend which is a function accepting an object hash whose property names are mapped to method names and the corresponding function is mapped as the method. Example:

const moriExtender = require('mori-fluent').extend;
const mori = moriExtender({
    prettyJSON: function myPretty() {
        return JSON.stringify(this.toJs(), null, 2);
    }
})

const result = mori.vector(1, 3, 5).prettyJSON();

// also good to know, that there is only one mori instance:
console.log(mori === require('mori-fluent'));

About

like mori-ext, but mixes in the functions from mori-ext into the prototypes of mori's collections

Resources

License

Stars

Watchers

Forks

Packages

No packages published