wtf
v1.5.0
Published
Find out what the function you need
Downloads
138
Readme
wtf
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