class Edifunct::SegmentGroup
Represents the logical grouping of segments.
Attributes
children[R]
tag[R]
Public Class Methods
new(tag)
click to toggle source
# File lib/edifunct/segment_group.rb, line 11 def initialize(tag) @tag = tag @children = [] @child_segment_map = Hash.new { |hash, key| hash[key] = [] } @child_segment_group_map = Hash.new { |hash, key| hash[key] = [] } end
Public Instance Methods
add_segment(segment)
click to toggle source
# File lib/edifunct/segment_group.rb, line 19 def add_segment(segment) @children << segment @child_segment_map[segment.tag] << segment segment end
create_group(segment_group_tag)
click to toggle source
# File lib/edifunct/segment_group.rb, line 26 def create_group(segment_group_tag) segment_group = SegmentGroup.new(segment_group_tag) @children << segment_group @child_segment_group_map[segment_group.tag] << segment_group segment_group end
lookup_group(segment_group_tag)
click to toggle source
# File lib/edifunct/segment_group.rb, line 39 def lookup_group(segment_group_tag) lookup_groups(segment_group_tag).first end
lookup_groups(segment_group_tag)
click to toggle source
# File lib/edifunct/segment_group.rb, line 35 def lookup_groups(segment_group_tag) @child_segment_group_map[segment_group_tag] end
lookup_segment(segment_tag, &block)
click to toggle source
# File lib/edifunct/segment_group.rb, line 47 def lookup_segment(segment_tag, &block) if block_given? lookup_segments(segment_tag).find(&block) else lookup_segments(segment_tag).first end end
lookup_segments(segment_tag)
click to toggle source
# File lib/edifunct/segment_group.rb, line 43 def lookup_segments(segment_tag) @child_segment_map[segment_tag] end
print_with_structure()
click to toggle source
# File lib/edifunct/segment_group.rb, line 55 def print_with_structure _print_with_structure(self) end
Private Instance Methods
_print_with_structure(group, padding: "")
click to toggle source
# File lib/edifunct/segment_group.rb, line 61 def _print_with_structure(group, padding: "") group.children.each do |child| case child when Segment print "#{padding}#{child.raw_segment}\n" when SegmentGroup print "#{padding}#{child.tag}\n" _print_with_structure(child, padding: padding + " ") end end end