Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    wtfpublic

    wtf

    NPM Version Coverage Status Build Status Downloads Dependency Status License

    Find out what the function you need

    Install

    npm install wtf

    Usage

    Sync search

    Synchronous search is simple, fast and the only one supporting preloaded modules. Downside is that if it hangs - your thread will too.

    const lodash = require('lodash')
    const wtf = require('wtf')
     
    const print = ({ result, display }) => console.log(`${result} ≈ ${display}`)
     
    wtf.sync({ lodash },
      ['apple', 'p'], true,
      ['apple', 'x'], false
    ).map(print)

    Web worker

    Not implemented yet

    const wtf = require('wtf')
     
    const print = ({ result, display }) => display && console.log(`${result} ≈ ${display}`)
     
    wtf.webWorker('lodash',
      ['apple', 'p'], true,
      ['apple', 'x'], false
    ).map(print)

    Shortcut

    Prints results to the console.

    const lodash = require('lodash')
    const wtf = require('wtf')
     
    wtf({ lodash },
      ['apple', 'p'], true,
      ['apple', 'x'], false
    )

    Snippets

    You can pass snippets as an array of elements of form { func, display }. func is a functions to check. display is a function that generates display string.

    Snippet for addition can be defined this way:

    const snippets = [ { func: (a, b) => a + b, display: (a, b) => `${a} + ${b}` } ]
    wtf({ snippets }, [ 2, 3 ], 5)
    // 5 ≈ 2 + 3 

    Search in built-in global objects

    Object, Array, Date, String and RegExp are handled little differently when passed as module to look in. Their prototypes are inspected and found functions are added to the search. It means that besides obvious

    wtf({ Array }, [1, 2, 3], [1, 2, 3])
    // [1, 2, 3] ≈ Array.of(1, 2, 3) 

    ...you will be able to do:

    wtf({ Array }, [ [ 'a', 'b', 'c' ] ], 3)
    // 3 ≈ [ 'a', 'b', 'c' ].length 
    // 3 ≈ [ 'a', 'b', 'c' ].push() 
    // 3 ≈ [ 'a', 'b', 'c' ].unshift() 

    Function testers

    You can optionally send functions as the expected results to test the results.

    const lodash = require('lodash')
    const wtf = require('wtf')
     
    wtf({ lodash },
      [10, 20], x => x > 25
    )

    Curried functions or closures

    Results can be functions that will receive the result and return whether it equals. This is helpful for libraries like ramda that returns a function that satisfies something you'd like to test.

    const ramda = require('ramda')
    const wtf = require('wtf')
     
    wtf({ ramda },
      [a => a * 2, a => a + 1], fn => typeof fn === 'function' && fn(2) === 6
    ) // will print `ramda.compose` 

    License

    MIT © Vladimir Danchenkov

    Keywords

    install

    npm i wtf

    Downloadsweekly downloads

    3

    version

    1.5.0

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar