UNPKG

charlike

Version:

Small, fast, simple and streaming project scaffolder for myself, but not only. Supports hundreds of template engines through the @JSTransformers API or if you want custom `render` function passed through options

32 lines (24 loc) 608 B
'use strict'; module.exports = function (fn, errMsg) { if (typeof fn !== 'function') { throw new TypeError('Expected a function'); } var ret; var called = false; var fnName = fn.displayName || fn.name || (/function ([^\(]+)/.exec(fn.toString()) || [])[1]; var onetime = function () { if (called) { if (errMsg === true) { fnName = fnName ? fnName + '()' : 'Function'; throw new Error(fnName + ' can only be called once.'); } return ret; } called = true; ret = fn.apply(this, arguments); fn = null; return ret; }; onetime.displayName = fnName; return onetime; };