| # wrappy |
| |
| Callback wrapping utility |
| |
| ## USAGE |
| |
| ```javascript |
| var wrappy = require("wrappy") |
| |
| // var wrapper = wrappy(wrapperFunction) |
| |
| // make sure a cb is called only once |
| // See also: http://npm.im/once for this specific use case |
| var once = wrappy(function (cb) { |
| var called = false |
| return function () { |
| if (called) return |
| called = true |
| return cb.apply(this, arguments) |
| } |
| }) |
| |
| function printBoo () { |
| console.log('boo') |
| } |
| // has some rando property |
| printBoo.iAmBooPrinter = true |
| |
| var onlyPrintOnce = once(printBoo) |
| |
| onlyPrintOnce() // prints 'boo' |
| onlyPrintOnce() // does nothing |
| |
| // random property is retained! |
| assert.equal(onlyPrintOnce.iAmBooPrinter, true) |
| ``` |