https://github.com/Gozala/reducers
Raw File
Tip revision: 291e0255e28ba6c015b69cc8556a287f9c873b9e authored by Irakli Gozalishvili on 25 October 2012, 06:36:51 UTC
Version 0.1.4
Tip revision: 291e025
take-while.js
"use strict";

var accumulated = require("./accumulated")
var transform = require("./transform")


function takeWhile(source, predicate) {
  /**
  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(value) {
    return value < 10
  })
  print(digits)   // => <stream 2 7 />
  **/
  return transform(source, function(next, value, state) {
    return predicate(value) ? next(value, state) :
                              next(accumulated(), state)
  })
}

module.exports = takeWhile
back to top