Version 1
[yaffs-website] / node_modules / grunt-legacy-log / node_modules / lodash / internal / lazyValue.js
diff --git a/node_modules/grunt-legacy-log/node_modules/lodash/internal/lazyValue.js b/node_modules/grunt-legacy-log/node_modules/lodash/internal/lazyValue.js
new file mode 100644 (file)
index 0000000..8de68e6
--- /dev/null
@@ -0,0 +1,72 @@
+var baseWrapperValue = require('./baseWrapperValue'),
+    getView = require('./getView'),
+    isArray = require('../lang/isArray');
+
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
+
+/** Used to indicate the type of lazy iteratees. */
+var LAZY_FILTER_FLAG = 1,
+    LAZY_MAP_FLAG = 2;
+
+/* Native method references for those with the same name as other `lodash` methods. */
+var nativeMin = Math.min;
+
+/**
+ * Extracts the unwrapped value from its lazy wrapper.
+ *
+ * @private
+ * @name value
+ * @memberOf LazyWrapper
+ * @returns {*} Returns the unwrapped value.
+ */
+function lazyValue() {
+  var array = this.__wrapped__.value(),
+      dir = this.__dir__,
+      isArr = isArray(array),
+      isRight = dir < 0,
+      arrLength = isArr ? array.length : 0,
+      view = getView(0, arrLength, this.__views__),
+      start = view.start,
+      end = view.end,
+      length = end - start,
+      index = isRight ? end : (start - 1),
+      iteratees = this.__iteratees__,
+      iterLength = iteratees.length,
+      resIndex = 0,
+      takeCount = nativeMin(length, this.__takeCount__);
+
+  if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) {
+    return baseWrapperValue(array, this.__actions__);
+  }
+  var result = [];
+
+  outer:
+  while (length-- && resIndex < takeCount) {
+    index += dir;
+
+    var iterIndex = -1,
+        value = array[index];
+
+    while (++iterIndex < iterLength) {
+      var data = iteratees[iterIndex],
+          iteratee = data.iteratee,
+          type = data.type,
+          computed = iteratee(value);
+
+      if (type == LAZY_MAP_FLAG) {
+        value = computed;
+      } else if (!computed) {
+        if (type == LAZY_FILTER_FLAG) {
+          continue outer;
+        } else {
+          break outer;
+        }
+      }
+    }
+    result[resIndex++] = value;
+  }
+  return result;
+}
+
+module.exports = lazyValue;