Class: PVC::LinesPiece::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/pvc/lines_piece.rb

Instance Method Summary collapse

Constructor Details

#initialize(block, opts) ⇒ Runner

Returns a new instance of Runner.



6
7
8
9
10
11
12
# File 'lib/pvc/lines_piece.rb', line 6

def initialize(block, opts)
  @block = block
  @mode = opts[:mode]
  @read, @write = IO.pipe
  @read.close_on_exec = true
  @write.close_on_exec = true
end

Instance Method Details

#finishObject



32
33
34
35
36
# File 'lib/pvc/lines_piece.rb', line 32

def finish
  @write.close
  @thread.join
  @read.close
end

#start(following_piece) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/pvc/lines_piece.rb', line 18

def start(following_piece)
  @return = nil
  @thread = Thread.new do
    @read.each_line do |line|
      new_line = @block.call(line)
      following_piece.stdin.write case @mode
        when :map then new_line
        when :tap then line
        else raise "wrong mode"
      end
    end
  end
end

#stdinObject



14
15
16
# File 'lib/pvc/lines_piece.rb', line 14

def stdin
  @write
end