Class: Proc::Composition

Inherits:
Object
  • Object
show all
Defined in:
lib/proc/composition.rb,
lib/proc/composition/deferable.rb,
lib/proc/composition/evaluator.rb

Defined Under Namespace

Classes: Deferable, Evaluator

Instance Method Summary collapse

Constructor Details

#initialize(client:, &block) ⇒ Composition



8
9
10
11
12
# File 'lib/proc/composition.rb', line 8

def initialize(client:, &block)
  @client = client
  @block = block
  @callables = []
end

Instance Method Details

#<<(callable) ⇒ Object



33
34
35
# File 'lib/proc/composition.rb', line 33

def <<(callable)
  @callables << callable
end

#>>(callable) ⇒ Object



27
28
29
30
31
# File 'lib/proc/composition.rb', line 27

def >>(callable)
  composed = dup
  composed << callable
  composed
end

#call(input, **arguments) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/proc/composition.rb', line 18

def call(input, **arguments)
  if @block
    evaluator = @block.call(Evaluator.new, **arguments)
    @client.perform("compose", input, procs: evaluator.serialize.concat(serialize))
  else
    @client.perform("compose", input, procs: serialize)
  end
end

#initialize_copy(_) ⇒ Object



14
15
16
# File 'lib/proc/composition.rb', line 14

def initialize_copy(_)
  @callables = @callables.dup
end