Class: RailroadDiagrams::SeparatedList
- Inherits:
-
DiagramItem
- Object
- DiagramItem
- RailroadDiagrams::SeparatedList
- Includes:
- ExpandedNode
- Defined in:
- lib/railroad_diagrams/separated_list.rb,
sig/generated/railroad_diagrams/separated_list.rbs
Overview
Draws items separated by a delimiter.
Instance Attribute Summary
Attributes inherited from DiagramItem
#attrs, #children, #down, #height, #needs_space, #up, #width
Instance Method Summary collapse
- #child_nodes ⇒ Object
-
#initialize(item, separator, min: 1, trailing: false, id: nil, cls: nil, attrs: {}) ⇒ Object
constructor
rubocop:disable-next Metrics/ParameterLists.
- #to_h ⇒ Object
- #to_s ⇒ Object
Methods included from ExpandedNode
#adopt_expansion, #expanded, #format, #measure, #render_svg, #render_text, #text_diagram, #walk
Methods inherited from DiagramItem
#==, #add, #apply_user_attributes, #container_element?, #determine_gaps, #each_node, #format, #hash, inherited, #inspect, #structural_state, #text_diagram, #to_str, #walk, #wrap_string, #write_children, #write_opening_tag, #write_standalone, #write_svg
Constructor Details
#initialize(item, separator, min: 1, trailing: false, id: nil, cls: nil, attrs: {}) ⇒ Object
rubocop:disable-next Metrics/ParameterLists
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/railroad_diagrams/separated_list.rb', line 12 def initialize(item, separator, min: 1, trailing: false, id: nil, cls: nil, attrs: {}) super('g', id: id, cls: cls, data_attrs: attrs) raise InvalidArgument, 'min must be a non-negative integer' unless min.is_a?(Integer) && min >= 0 raise InvalidArgument, 'trailing must be a boolean' unless [true, false].include?(trailing) @item = wrap_string(item) @separator = wrap_string(separator) @min = min @trailing = trailing repeated = min > 1 ? Repeat.new(@item, min: min, separator: @separator) : OneOrMore.new(@item, @separator) repeated = Sequence.new(repeated, Optional.new(@separator)) if trailing adopt_expansion(min.zero? ? Optional.new(repeated) : repeated) end |
Instance Method Details
#child_nodes ⇒ Object
30 31 32 |
# File 'lib/railroad_diagrams/separated_list.rb', line 30 def child_nodes [@item, @separator] end |
#to_h ⇒ Object
34 35 36 37 38 39 |
# File 'lib/railroad_diagrams/separated_list.rb', line 34 def to_h Serialization.add_attributes( { 'type' => 'separated_list', 'item' => @item.to_h, 'separator' => @separator.to_h, 'min' => @min, 'trailing' => @trailing }, self ) end |
#to_s ⇒ Object
26 27 28 |
# File 'lib/railroad_diagrams/separated_list.rb', line 26 def to_s "SeparatedList(#{@item}, #{@separator}, min=#{@min}, trailing=#{@trailing})" end |