| # 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) | |
| ``` | |