aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/node_modules/genfun/lib/util.js
diff options
context:
space:
mode:
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.js37
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)
+ }
+}