3.1.0 • Published 8 years ago

handle-arguments v3.1.0

Weekly downloads
47
License
MIT
Repository
github
Last release
8 years ago

handle-arguments npmjs.com The MIT License npm downloads

Get separately non-callback arguments in .arguments and the last argument if it is-callback-function in .callback. It also works like sliced, but returns object with .arguments and .callback properties.

code climate standard code style travis build status coverage status dependency status

Install

npm i handle-arguments --save

Usage

For more use-cases see the tests

const handleArguments = require('handle-arguments')

handleArguments

Get separately non-callback arguments in .arguments, and the last function if it is-callback-function in .callback. Signature is like sliced, it works almost the same way, but returns object with .arguments and .callback properties.

Params

  • argz {Array|Arguments}: Arguments object or array to eat.
  • names {Array|Number}: If array directly passed to is-callback-function, otherwise to sliced.
  • index {Number}: Passed directly to sliced if number.
  • returns {Object}

Example

var handle = require('handle-arguments')

function fixture () {
  return handle(arguments)
}

function cb () {}
function noop () {}

console.log(fixture(1, 2, 3, 4).arguments) // => [1, 2, 3, 4]
console.log(fixture(1, 2, 3, 4).callback) // => false

console.log(fixture(1, 2, cb).arguments) // => [1, 2]
console.log(fixture(1, 2, cb).callback) // => [Function: cb]

console.log(fixture(1, 2, noop).arguments) // => [1, 2, noop]
console.log(fixture(1, 2, noop).callback) // => false

// treat functions named `noop` or `foo` as callback
function fn () {
  return handle(arguments, ['foo', 'noop'])
}

console.log(fn(1, 2, 3, noop).arguments) // => [1, 2, 3]
console.log(fn(1, 2, 3, noop).callback) // => [Function: noop]

Instead of commonly used and wrong pattern

It is part of "Optiomization Killers" and needed very much, so we need correct pattern to reuse.

function fixture () {
  var args = [].slice.call(arguments)
  var len = args.length
  var callback = args[len - 1]

  if (typeof callback === 'function') {
    args = args.slice(0, -1)
    callback.apply(null, [null].concat(args))
  }
  return args
}

Related

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
But before doing anything, please read the CONTRIBUTING.md guidelines.

Charlike Make Reagent new message to charlike freenode #charlike

tunnckoCore.tk keybase tunnckoCore tunnckoCore npm tunnckoCore twitter tunnckoCore github