diff options
Diffstat (limited to 'deps/node/deps/npm/node_modules/genfun/lib/util.js')
-rw-r--r-- | deps/node/deps/npm/node_modules/genfun/lib/util.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/deps/node/deps/npm/node_modules/genfun/lib/util.js b/deps/node/deps/npm/node_modules/genfun/lib/util.js new file mode 100644 index 00000000..23770629 --- /dev/null +++ b/deps/node/deps/npm/node_modules/genfun/lib/util.js @@ -0,0 +1,37 @@ +'use strict' + +module.exports.isObjectProto = isObjectProto +function isObjectProto (obj) { + return obj === Object.prototype +} + +const _null = {} +const _undefined = {} +const Bool = Boolean +const Num = Number +const Str = String +const boolCache = { + true: new Bool(true), + false: new Bool(false) +} +const numCache = {} +const strCache = {} + +/* + * Returns a useful dispatch object for value using a process similar to + * the ToObject operation specified in http://es5.github.com/#x9.9 + */ +module.exports.dispatchableObject = dispatchableObject +function dispatchableObject (value) { + // To shut up jshint, which doesn't let me turn off this warning. + const Obj = Object + if (value === null) { return _null } + if (value === undefined) { return _undefined } + switch (typeof value) { + case 'object': return value + case 'boolean': return boolCache[value] + case 'number': return numCache[value] || (numCache[value] = new Num(value)) + case 'string': return strCache[value] || (strCache[value] = new Str(value)) + default: return new Obj(value) + } +} |