Needlessly Promiscuous, Modularize!

    to-function

    2.0.6 • Public • Published

    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

    Keywords

    Install

    npm i to-function

    DownloadsWeekly Downloads

    21,703

    Version

    2.0.6

    License

    none

    Last publish

    Collaborators

    • tjholowaychuk
    • mattmueller
    • timoxley
    • jonathanong
    • jongleberry
    • tootallnate
    • clintwood
    • thehydroimpulse
    • stephenmathieson
    • trevorgerhardt
    • timaschew
    • hughsk