Class: Tb::HeaderWriter

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

Direct Known Subclasses

HeaderCSVWriter, HeaderTSVWriter

Instance Method Summary collapse

Constructor Details

#initialize(put_array) ⇒ HeaderWriter

Returns a new instance of HeaderWriter.



34
35
36
# File 'lib/tb/headerwriter.rb', line 34

def initialize(put_array)
  @put_array = put_array
end

Instance Method Details

#finishObject



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/tb/headerwriter.rb', line 81

def finish
  generate_header_if_possible
  if @header_use_buffer == nil
    generate_header_if_possible
  end
  if @header_use_buffer
    @header_buffer.rewind
    @put_array.call @header
    begin
      while true
        hash = Marshal.load(@header_buffer)
        put_hash_immediate(hash)
      end
    rescue EOFError
    end
    @header_buffer.close!
  end
end

#generate_header_if_possibleObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/tb/headerwriter.rb', line 46

def generate_header_if_possible
  return if defined? @header_use_buffer
  header = nil
  if defined? @header_generator
    header = @header_generator.call
  end
  if header
    @header_use_buffer = false
    @header = header
    @put_array.call @header
  else
    @header_use_buffer = true
    @header = []
    @header_buffer = Tempfile.new('tb')
  end
end

#header_generator=(gen) ⇒ Object



42
43
44
# File 'lib/tb/headerwriter.rb', line 42

def header_generator=(gen)
  @header_generator = gen
end

#header_required?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/tb/headerwriter.rb', line 38

def header_required?
  true
end

#put_hash(hash) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/tb/headerwriter.rb', line 63

def put_hash(hash)
  generate_header_if_possible
  if @header_use_buffer
    put_hash_buffer(hash)
  else
    put_hash_immediate(hash)
  end
  nil
end