You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							685 B
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							685 B
						
					
					
				# 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)
 | 
						|
```
 |