class TSV::Table
Attributes
header[RW]
source[RW]
Public Class Methods
new(source, params = {}, &block)
click to toggle source
# File lib/tsv/table.rb, line 10 def initialize(source, params = {}, &block) self.header = params.fetch(:header, true) self.source = source self.enumerator.each(&block) if block_given? end
Public Instance Methods
data_enumerator()
click to toggle source
# File lib/tsv/table.rb, line 47 def data_enumerator source.each_line end
enumerator()
click to toggle source
# File lib/tsv/table.rb, line 24 def enumerator @enumerator ||= ::Enumerator.new do |y| lines = data_enumerator first_line = generate_row_from begin lines.next rescue StopIteration => ex '' end local_header = if self.header first_line else lines.rewind generate_default_header_from first_line end loop do y << TSV::Row.new(generate_row_from(lines.next).freeze, local_header.freeze) end end end
with_header()
click to toggle source
# File lib/tsv/table.rb, line 16 def with_header self.class.new(self.source, header: true) end
without_header()
click to toggle source
# File lib/tsv/table.rb, line 20 def without_header self.class.new(self.source, header: false) end
Protected Instance Methods
generate_default_header_from(example_line)
click to toggle source
# File lib/tsv/table.rb, line 57 def generate_default_header_from(example_line) (0...example_line.length).to_a.map(&:to_s) end
generate_row_from(str)
click to toggle source
# File lib/tsv/table.rb, line 53 def generate_row_from(str) str.to_s.chomp.split("\t", -1) end