npm install fm --save
- methods can be used statically or via OO syntax
var fm = require('fm')
fm(callback).partial(...arguments)
fm.prototype.partial.apply(callback, arguments)
→ function that calls this[method]
fm.late('yes').call({ yes:function() { return 1 } }) // => 1
fm.late(0).call([function() { return this.length }]) // => 1
→ function that calls callback with this
binded to scope, and prepends leading arguments
fm.bind(callback, scope) // basic bind
fm.bind(callback, scope, 'a', 'b', 'c') // bind with partial arguments
→ function that calls callback with dynamic this
, and prepends leading arguments
fm.partial(fm.got, 'a', 'b')('c') // => ['a', 'b', 'c']
fm.partial('got', 'a', 'b').call(fm, 'c') // => ['a', 'b', 'c']
fm.prototype.partial.apply(callback, array) // useful for array partials
→ function that calls callback with dynamic this
, and arguments
sliced by [].slice
fm.slice(function(a, b, c) {}, 0, 2) // => new function that accepts only 2 args
fm.slice(fm.bind, 0, 2) // => version of .bind that ignores extra arguments
fm.slice(fm.got, 1)('a', 'b', 'c') // => ['b', 'c']
fm.slice(fm.got, -2)('a', 'b', 'c') // => ['b', 'c']
fm.slice(fm.got, 1, 2)('a', 'b', 'c') // => ['b']
- Convert an instance method into a static one. → function
fm.stat([].slice) // => static slice() function
fm.stat({}.hasOwnProperty) // => static has() function
- Create a new function that invokes the next function with the result the first function → function
fm.flow(fm.constant(2), fm.constant(3))()// => 3
→ function that always returns value regardless of context or arguments
fm.constant() // => noop function
fm.constant()() // => undefined
fm.constant(true)() // => true
→ function that reduces the arguments passed to callback to the argument at the specified index
fm.eq(Number, 1)(10, 11, 12) // => 11
fm.eq(Number, -1)(10, 11, 12) // => 12
→ array of arguments received
fm.got() // => []
fm.got(0, 1, 2) // => [0, 1, 2]
→ this
Works...everywhere! Tested in node, Chrome, FF, Opera, IE
npm install
npm test