Module: Ramda::Internal::Transducers

Defined in:
lib/ramda/internal/transducers.rb

Overview

Transducers

Signature: (*, reducing_fn) -> Proc((acc, input) -> acc)

Class Method Summary collapse

Class Method Details

.filter(predicate, reducer) ⇒ Object

predicate - fn with 1 arity



9
10
11
12
13
14
15
16
17
# File 'lib/ramda/internal/transducers.rb', line 9

def self.filter(predicate, reducer)
  lambda do |acc, x|
    if predicate.call(x)
      reducer.call(acc, x)
    else
      acc
    end
  end
end

.map(transformer, reducer) ⇒ Object

transformer - fn with 1 arity



20
21
22
23
24
# File 'lib/ramda/internal/transducers.rb', line 20

def self.map(transformer, reducer)
  lambda do |acc, x|
    reducer.call(acc, transformer.call(x))
  end
end

.take(limit, reducer) ⇒ Object

limit - number



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ramda/internal/transducers.rb', line 27

def self.take(limit, reducer)
  count = 0
  lambda do |acc, x|
    count += 1
    if limit >= count
      reducer.call(acc, x)
    else
      acc
    end
  end
end