Version 1
[yaffs-website] / node_modules / uncss / node_modules / lodash / keys.js
diff --git a/node_modules/uncss/node_modules/lodash/keys.js b/node_modules/uncss/node_modules/lodash/keys.js
new file mode 100644 (file)
index 0000000..4bad147
--- /dev/null
@@ -0,0 +1,55 @@
+var baseHas = require('./internal/baseHas'),
+    baseKeys = require('./internal/baseKeys'),
+    indexKeys = require('./internal/indexKeys'),
+    isArrayLike = require('./isArrayLike'),
+    isIndex = require('./internal/isIndex'),
+    isPrototype = require('./internal/isPrototype');
+
+/**
+ * Creates an array of the own enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
+ */
+function keys(object) {
+  var isProto = isPrototype(object);
+  if (!(isProto || isArrayLike(object))) {
+    return baseKeys(object);
+  }
+  var indexes = indexKeys(object),
+      skipIndexes = !!indexes,
+      result = indexes || [],
+      length = result.length;
+
+  for (var key in object) {
+    if (baseHas(object, key) &&
+        !(skipIndexes && (key == 'length' || isIndex(key, length))) &&
+        !(isProto && key == 'constructor')) {
+      result.push(key);
+    }
+  }
+  return result;
+}
+
+module.exports = keys;