https://github.com/Gozala/reducers
Tip revision: b2e5e36a57c3d7e3043afe4ace945bbd936d0db1 authored by Irakli Gozalishvili on 02 November 2012, 23:49:32 UTC
Merge pull request #21 from Gozala/experiment/future
Merge pull request #21 from Gozala/experiment/future
Tip revision: b2e5e36
take-while.js
"use strict";
var reducer = require("./reducer")
var end = require("./end")
var takeWhile = reducer(function takeWhile(predicate, next, value, result) {
/**
Returns a sequence of successive items from `source` while `predicate(item)`
returns `true`. `predicate` must be free of side-effects.
## Example
var digits = takeWhile([ 2, 7, 10, 23 ], function(x) { return x < 10 })
print(digits) // => < 2 7 >
**/
return predicate(value) ? next(value, result) :
// Predicate returned `false` just pass `end`. Reducer will take
// care of returning `reduced(result)` back.
next(end)
})
module.exports = takeWhile