class Dossier::Segment::Rows

Attributes

definition[RW]
report[RW]
segment[RW]
segmenter[RW]

Public Class Methods

new(segmenter, segment, definition) click to toggle source
# File lib/dossier/segment/rows.rb, line 6
def initialize(segmenter, segment, definition)
  self.segmenter  = segmenter
  self.report     = segmenter.report
  self.segment    = segment
  self.definition = definition
end

Public Instance Methods

each() { |format(summarize(truncate(row)))| ... } click to toggle source
# File lib/dossier/segment/rows.rb, line 19
def each
  segmenter_data.each { |row| yield format(summarize(truncate(row))) }
end
inspect() click to toggle source
# File lib/dossier/segment/rows.rb, line 23
def inspect
  "#<#{self.class.name}:@rows.count=#{rows.count}>"
end
raw_headers() click to toggle source
# File lib/dossier/segment/rows.rb, line 15
def raw_headers
  segmenter.headers
end

Private Instance Methods

segmenter_data() click to toggle source
# File lib/dossier/segment/rows.rb, line 29
def segmenter_data
  @segmenter_data ||= segmenter.data.fetch(segment.key_path)
end
summarize(row) click to toggle source
# File lib/dossier/segment/rows.rb, line 37
def summarize(row)
  row.tap { |r| [segmenter, segment.chain].flatten.each { |s| s.summarize row } }
end
truncate(row) click to toggle source
# File lib/dossier/segment/rows.rb, line 33
def truncate(row)
  row.dup.tap { |r| segmenter.header_index_map.values.sort.each_with_index { |i, j| r.delete_at(i - j) } }
end