Class: Fairy::PInject

Inherits:
PIOFilter show all
Defined in:
lib/fairy/node/p-inject.rb

Direct Known Subclasses

PLocalInject, PWideInject

Constant Summary

Constants inherited from PIOFilter

Fairy::PIOFilter::ST_WAIT_IMPORT

Constants inherited from PFilter

Fairy::PFilter::END_OF_STREAM, Fairy::PFilter::ST_ACTIVATE, Fairy::PFilter::ST_FINISH, Fairy::PFilter::ST_INIT

Instance Attribute Summary

Attributes inherited from PFilter

#IGNORE_EXCEPTION, #id, #log_id, #ntask

Instance Method Summary collapse

Methods inherited from PIOFilter

#input=

Methods inherited from PFilter

#abort_running, #basic_start, #break_running, #each, #global_break, #global_break_from_other, #handle_exception, #key, #key=, #next, #no, #no=, #notice_status, #processor, #start, #start_export, #start_watch_status, #status=, #terminate, #terminate_proc

Constructor Details

#initialize(id, processor, bjob, opts, block_source) ⇒ PInject

Returns a new instance of PInject.



13
14
15
16
17
18
19
20
21
22
# File 'lib/fairy/node/p-inject.rb', line 13

def initialize(id, processor, bjob, opts, block_source)
  super

  @init_value = :__FAIRY_NO_VALUE__
  if @opts.key?(:init_value)
  @init_value = @opts[:init_value].dc_deep_copy
  end
  @block_source = block_source
#      @inject_proc = @context.create_proc(@block_source)
end

Instance Method Details

#basic_each(&block) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/fairy/node/p-inject.rb', line 24

def basic_each(&block)
  @inject_proc = BBlock.new(@block_source, @context, self)
  sum = @init_value
  @input.each do |e|
  if sum == :__FAIRY_NO_VALUE__
    sum = e
  else
# Log::debug(self, "sum, e, #{sum}, #{e}")
    if Import::CTLTOKEN_NULLVALUE === (v = @inject_proc.yield(sum, e))
 next
    end
    sum = v
  end
  end
  finish(sum, &block)
end