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

Package detail

to-function

component99.4k2.0.6

Convert property access strings into functions

utility

readme

to-function

Convert property access strings into functions

Installation

$ component install component/to-function

Examples

var toFunction = require('to-function');
var fn = toFunction('name.first');
var user = { name: { first: 'Tobi' }};
fn(user);
// => "Tobi"

Dot access


var _ = require('..');

var users = [
  { name: { first: 'Tobi' }},
  { name: { first: 'Loki' }},
  { name: { first: 'Jane' }},
  { name: { first: 'Manny' }}
];

var short = users.map(_('name.first'));
console.log(short);
// => [ 'Tobi', 'Loki', 'Jane', 'Manny' ]

Equality

var _ = require('..');

var tobi = { name: { first: 'Tobi' }, age: 2 };
var loki = { name: { first: 'Loki' }, age: 2 };
var jane = { name: { first: 'Jane' }, age: 6 };

var users = [tobi, loki, jane];

var user = users.filter(_(loki)).pop();
console.log(user);
// => { name: { first: 'Loki' }, age: 2 }

Expressions

var _ = require('..');

var users = [
  { name: { first: 'Tobi' }, age: 2 },
  { name: { first: 'Loki' }, age: 2 },
  { name: { first: 'Jane' }, age: 6 }
];

var oldPets = users.filter(_('age > 2 && age < 10'));
console.log(oldPets);
// => [ { name: { first: 'Jane' }, age: 6 } ]

Regular expressions

var _ = require('..');

var users = [
  'Tobi',
  'Loki',
  'Jane'
];

var t = users.filter(_(/^T/));

console.log(t);
// => [ 'Tobi' ]

Nesting

var _ = require('..');

var users = [
  { name: { first: 'Tobi', last: 'Ferret' }, age: 2 },
  { name: { first: 'Loki', last: 'Ferret' }, age: 2 },
  { name: { first: 'Luna', last: 'Cat' }, age: 2 },
  { name: { first: 'Manny', last: 'Cat' }, age: 3 }
];

// single-key

var query = _({
  name: {
    last: 'Cat'
  }
});

console.log(users.filter(query));
// => [ { name: { first: 'Luna', last: 'Cat' }, age: 2 },
//      { name: { first: 'Manny', last: 'Cat' }, age: 3 } ]

// multi-key

var query = _({
  name: {
    first: /^L/,
    last: 'Cat'
  }
});

console.log(users.filter(query));
// => [ { name: { first: 'Luna', last: 'Cat' }, age: 2 } ]

// multi-level

var query = _({
  name: { last: 'Cat' },
  age: 3
});

console.log(users.filter(query));
// => [ { name: { first: 'Manny', last: 'Cat' }, age: 3 } ]

License

MIT

changelog

2.0.6 / 2015-01-29

  • package: fix "browserify" usage
  • Remove unused dependency (#16, @Raynos)

2.0.5 / 2014-05-27

  • package: "remove-try-require" should be a dependency

2.0.4 / 2014-05-16

  • index: fix lint
  • add .jshintrc file
  • test: whitespace
  • index: properly handle nested properties (#11)

2.0.3 / 2014-04-04

  • use remove-try-require to correct browserify support.
  • add package.json test script.

2.0.2 / 2014-04-02

  • really fix npm/browserify package

2.0.1 / 2014-03-26

  • fix npm package

2.0.0 / 2014-02-27

  • cmp; bump version 2.0.0
  • core: remove dual requiring dependency

1.2.1 / 2014-02-05

  • add support for complex expressions and implicit getter-style functions
  • better-assert should be a dev-Dependency

1.1.1 / 2012-11-20

  • add immediate support for expressions

1.1.0 / 2012-11-20

  • add js expression support
  • add strict equality default
  • add regexp support

1.0.0 / 2012-11-08

  • add getter-style function invocation support