aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/iterable
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es5-ext/iterable')
-rw-r--r--node_modules/es5-ext/iterable/for-each.js12
-rw-r--r--node_modules/es5-ext/iterable/index.js8
-rw-r--r--node_modules/es5-ext/iterable/is.js11
-rw-r--r--node_modules/es5-ext/iterable/validate-object.js9
-rw-r--r--node_modules/es5-ext/iterable/validate.js8
5 files changed, 48 insertions, 0 deletions
diff --git a/node_modules/es5-ext/iterable/for-each.js b/node_modules/es5-ext/iterable/for-each.js
new file mode 100644
index 000000000..2840e952d
--- /dev/null
+++ b/node_modules/es5-ext/iterable/for-each.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var forOf = require("es6-iterator/for-of")
+ , isIterable = require("es6-iterator/is-iterable")
+ , iterable = require("./validate")
+
+ , forEach = Array.prototype.forEach;
+
+module.exports = function (target, cb/*, thisArg*/) {
+ if (isIterable(iterable(target))) forOf(target, cb, arguments[2]);
+ else forEach.call(target, cb, arguments[2]);
+};
diff --git a/node_modules/es5-ext/iterable/index.js b/node_modules/es5-ext/iterable/index.js
new file mode 100644
index 000000000..4b898fc8c
--- /dev/null
+++ b/node_modules/es5-ext/iterable/index.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = {
+ forEach: require("./for-each"),
+ is: require("./is"),
+ validate: require("./validate"),
+ validateObject: require("./validate-object")
+};
diff --git a/node_modules/es5-ext/iterable/is.js b/node_modules/es5-ext/iterable/is.js
new file mode 100644
index 000000000..aa5a9b9e1
--- /dev/null
+++ b/node_modules/es5-ext/iterable/is.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , isValue = require("../object/is-value")
+ , isArrayLike = require("../object/is-array-like");
+
+module.exports = function (value) {
+ if (!isValue(value)) return false;
+ if (typeof value[iteratorSymbol] === "function") return true;
+ return isArrayLike(value);
+};
diff --git a/node_modules/es5-ext/iterable/validate-object.js b/node_modules/es5-ext/iterable/validate-object.js
new file mode 100644
index 000000000..26e622b57
--- /dev/null
+++ b/node_modules/es5-ext/iterable/validate-object.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isObject = require("../object/is-object")
+ , is = require("./is");
+
+module.exports = function (value) {
+ if (is(value) && isObject(value)) return value;
+ throw new TypeError(value + " is not an iterable or array-like object");
+};
diff --git a/node_modules/es5-ext/iterable/validate.js b/node_modules/es5-ext/iterable/validate.js
new file mode 100644
index 000000000..94a91c471
--- /dev/null
+++ b/node_modules/es5-ext/iterable/validate.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var is = require("./is");
+
+module.exports = function (value) {
+ if (is(value)) return value;
+ throw new TypeError(value + " is not an iterable or array-like");
+};