Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

handle-arguments

hybridables164MIT3.1.0

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.

handle-arguments

readme

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
}

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

changelog

3.1.0 - 2016-05-04

  • Release v3.1.0 / npm@v3.1.0
  • update badges
  • bump deps
  • update docs example
  • update description
  • run verb
  • start docs
  • update tests
  • follow sliced lib signature
  • allow passing custom names to is-callback-function lib
  • update tests
  • start tests
  • update and refactor

3.0.4 - 2015-05-25

3.0.3 - 2015-05-25

  • Release v3.0.3 / npm@v3.0.3
  • update docs
  • update
  • simplify
    • switch to use sliced
    • it is little bit faster than array-slice
    • remove manage-arguments
    • simplify logic

3.0.2 - 2015-05-25

  • Release v3.0.2 / npm@v3.0.2
  • add features section
  • update changelog
  • use manage-arguments to prevent arguments leakage
  • update see also section
  • update - readme style, travis, package.json etc struff

3.0.1 - 2015-05-09

3.0.0 - 2015-05-09

  • Release v3.0.0 / npm@v3.0.0
  • run update, rename files
  • breaking change: callback is undefined, if last arg is not a function
  • update readme
  • apply feross/standard
  • replace mocha with assertit

2.0.0 - 2015-01-28

  • Release v2.0.0 / npm@v2.0.0
  • because the "maybe-breakable" change in v1.0.3: "if last arguments isnt function, default cb is empty function named defaultHanleArgumentsCallback"

1.0.4 - 2015-01-26 (deprecated)

  • Release v1.0.4 / npm@v1.0.4
  • update reflinks
  • change repo links

1.0.3 - 2015-01-26 (deprecated)

  • Release v1.0.3 / npm@v1.0.3
  • add more related
  • add test for changed behavior
  • if last argument isnt function, default cb is empty function named defaultHanleArgumentsCallback
  • add cb alias for callback

1.0.2 - 2015-01-21

1.0.1 - 2015-01-21

  • Release v1.0.1 / npm@v1.0.1
  • tests titles if to when

1.0.0 - 2015-01-21