"Fossies" - the Fresh Open Source Software Archive

Member "Atom/resources/app/apm/node_modules/npm/node_modules/wrappy/wrappy.js" (8 Mar 2017, 905 Bytes) of archive /windows/misc/atom-windows.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Javascript source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 // Returns a wrapper function that returns a wrapped callback
    2 // The wrapper function should do some stuff, and return a
    3 // presumably different callback function.
    4 // This makes sure that own properties are retained, so that
    5 // decorations and such are not lost along the way.
    6 module.exports = wrappy
    7 function wrappy (fn, cb) {
    8   if (fn && cb) return wrappy(fn)(cb)
    9 
   10   if (typeof fn !== 'function')
   11     throw new TypeError('need wrapper function')
   12 
   13   Object.keys(fn).forEach(function (k) {
   14     wrapper[k] = fn[k]
   15   })
   16 
   17   return wrapper
   18 
   19   function wrapper() {
   20     var args = new Array(arguments.length)
   21     for (var i = 0; i < args.length; i++) {
   22       args[i] = arguments[i]
   23     }
   24     var ret = fn.apply(this, args)
   25     var cb = args[args.length-1]
   26     if (typeof ret === 'function' && ret !== cb) {
   27       Object.keys(cb).forEach(function (k) {
   28         ret[k] = cb[k]
   29       })
   30     }
   31     return ret
   32   }
   33 }