class Dossier::Segment
Attributes
definition[RW]
options[RW]
parent[RW]
report[RW]
segmenter[RW]
Public Class Methods
new(segmenter, definition, options = {})
click to toggle source
# File lib/dossier/segment.rb, line 7 def initialize(segmenter, definition, options = {}) self.segmenter = segmenter self.report = segmenter.report self.definition = definition self.options = options.symbolize_keys extend(definition.chain_module) end
Public Instance Methods
chain()
click to toggle source
# File lib/dossier/segment.rb, line 27 def chain @chain ||= [].tap { |collector| parent_chain(self, collector) } end
display_name()
click to toggle source
# File lib/dossier/segment.rb, line 15 def display_name if definition.display_name.respond_to?(:call) definition.display_name.call(options) else options.fetch(definition.display_name) end end
group_by()
click to toggle source
# File lib/dossier/segment.rb, line 23 def group_by options.fetch(definition.group_by) end
inspect()
click to toggle source
# File lib/dossier/segment.rb, line 35 def inspect "#<#{self.class.name}:#{key_path}>" end
key_path()
click to toggle source
# File lib/dossier/segment.rb, line 31 def key_path chain.map(&:group_by).reverse.join('.') end
Private Instance Methods
parent_chain(segment, collector)
click to toggle source
# File lib/dossier/segment.rb, line 43 def parent_chain(segment, collector) collector << segment parent_chain(segment.parent, collector) if segment.parent end