fm

0.8.0 • Public • Published

fm

JavaScript function modulation module

npm install fm --save

API


  • methods can be used statically or via OO syntax

fm()

fm(value) → OO wrapper

fm() inherits from fm.prototype
var fm = require('fm')
fm(callback).partial(...arguments)
fm.prototype.partial.apply(callback, arguments)

.late()

fm.late(method)

fm(method).late()

function that calls this[method]

fm.late('yes').call({ yes:function() { return 1 } }) // => 1
fm.late(0).call([function() { return this.length }]) // => 1

.bind()

fm.bind(callback, scope, ...arguments)

fm(callback).bind(scope, ...arguments)

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

.partial()

fm.partial(callback, ...arguments)

fm(callback).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

.slice()

fm.slice(callback, begin?, end?)

fm(callback).slice(begin?, end?)

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']

.stat()

fm.stat(method)

fm(method).stat()

  • Convert an instance method into a static one. → function
fm.stat([].slice) // => static slice() function
fm.stat({}.hasOwnProperty) // => static has() function

.flow()

fm.flow(first, next)

fm(first).flow(next)

  • 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

.constant()

fm.constant(value)

fm(value).constant()

function that always returns value regardless of context or arguments

fm.constant() // => noop function
fm.constant()() // => undefined
fm.constant(true)() // => true

.eq()

fm.eq(callback, index)

fm(callback).eq(index)

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

.got()

fm.got(...arguments)

fm(head).got(...arguments)

array of arguments received

fm.got() // => []
fm.got(0, 1, 2) // => [0, 1, 2]

.mixin()

fm.mixin(object)

this

Coverage

Works...everywhere! Tested in node, Chrome, FF, Opera, IE

Contribute

npm install
npm test

Playground

Try fm in your browser

Package Sidebar

Install

npm i fm

Weekly Downloads

10

Version

0.8.0

License

MIT

Last publish

Collaborators

  • ryanve