Class: Tb::Yielder

Inherits:
Object
  • Object
show all
Defined in:
lib/tb/enumerator.rb

Overview

Copyright © 2012 Tanaka Akira <[email protected]>

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above
   copyright notice, this list of conditions and the following
   disclaimer in the documentation and/or other materials provided
   with the distribution.
3. The name of the author may not be used to endorse or promote
   products derived from this software without specific prior
   written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(header_proc, base_yielder) ⇒ Yielder

Returns a new instance of Yielder.



30
31
32
33
34
# File 'lib/tb/enumerator.rb', line 30

def initialize(header_proc, base_yielder)
  @header_proc_called = false
  @header_proc = header_proc
  @base_yielder = base_yielder
end

Instance Attribute Details

#header_proc_calledObject (readonly)

Returns the value of attribute header_proc_called.



35
36
37
# File 'lib/tb/enumerator.rb', line 35

def header_proc_called
  @header_proc_called
end

Instance Method Details

#set_header(header) ⇒ Object

Raises:

  • (ArgumentError)


37
38
39
40
41
# File 'lib/tb/enumerator.rb', line 37

def set_header(header)
  raise ArgumentError, "set_header called twice" if @header_proc_called
  @header_proc_called = true
  @header_proc.call(header) if @header_proc
end

#yield(*args) ⇒ Object Also known as: <<



43
44
45
46
47
48
# File 'lib/tb/enumerator.rb', line 43

def yield(*args)
  if !@header_proc_called
    set_header(nil)
  end
  @base_yielder.yield(*args)
end