Class: Stupidedi::Schema::SegmentDef
- Inherits:
-
AbstractDef
- Object
- AbstractDef
- Stupidedi::Schema::SegmentDef
- Includes:
- Inspect
- Defined in:
- lib/stupidedi/schema/segment_def.rb
Overview
Instance Attribute Summary (collapse)
- - (Array<SimpleElementUse, CompositeElementUse>) element_uses readonly
- - (Symbol) id readonly
- - (String) name readonly
- - (SegmentUse) parent readonly
- - (String) purpose readonly
- - (Array<SyntaxNote>) syntax_notes readonly
Constructors (collapse)
Instance Method Summary (collapse)
- - (AbstractSet<CodeList>) code_lists
- - (SegmentDef) copy(changes = {})
- - (Values::SegmentVal) empty(usage)
-
- (SegmentDef) initialize(id, name, purpose, element_uses, syntax_notes, parent)
constructor
A new instance of SegmentDef.
- - pretty_print(q)
- - (Boolean) segment?
- - (SegmentUse) use(position, requirement, repeat_count)
- - value(element_vals, usage, position)
Methods included from Inspect
Methods inherited from AbstractDef
#component?, #composite?, #definition?, #element?, #functional_group?, #interchange?, #loop?, #repeated?, #simple?, #table?, #transaction_set?, #usage?
Constructor Details
- (SegmentDef) initialize(id, name, purpose, element_uses, syntax_notes, parent)
A new instance of SegmentDef
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/stupidedi/schema/segment_def.rb', line 28 def initialize(id, name, purpose, element_uses, syntax_notes, parent) @id, @name, @purpose, @element_uses, @syntax_notes, @parent = id, name, purpose, element_uses, syntax_notes, parent # Delay re-parenting until the entire definition tree has a root # to prevent unnecessarily copying objects unless parent.nil? @element_uses = @element_uses.map{|x| x.copy(:parent => self) } end end |
Instance Attribute Details
- (Array<SimpleElementUse, CompositeElementUse>) element_uses (readonly)
20 21 22 |
# File 'lib/stupidedi/schema/segment_def.rb', line 20 def element_uses @element_uses end |
- (Symbol) id (readonly)
11 12 13 |
# File 'lib/stupidedi/schema/segment_def.rb', line 11 def id @id end |
- (String) name (readonly)
14 15 16 |
# File 'lib/stupidedi/schema/segment_def.rb', line 14 def name @name end |
- (SegmentUse) parent (readonly)
26 27 28 |
# File 'lib/stupidedi/schema/segment_def.rb', line 26 def parent @parent end |
- (String) purpose (readonly)
17 18 19 |
# File 'lib/stupidedi/schema/segment_def.rb', line 17 def purpose @purpose end |
- (Array<SyntaxNote>) syntax_notes (readonly)
23 24 25 |
# File 'lib/stupidedi/schema/segment_def.rb', line 23 def syntax_notes @syntax_notes end |
Class Method Details
+ (SegmentDef) build(id, name, purpose, *args)
95 96 97 98 99 100 101 |
# File 'lib/stupidedi/schema/segment_def.rb', line 95 def build(id, name, purpose, *args) element_uses = args.take_while{|x| x.is_a?(AbstractElementUse) } syntax_notes = args.drop(element_uses.length) # @todo: Validate SyntaxNotes new(id, name, purpose, element_uses, syntax_notes, nil) end |
Instance Method Details
- (AbstractSet<CodeList>) code_lists
69 70 71 |
# File 'lib/stupidedi/schema/segment_def.rb', line 69 def code_lists @element_uses.map(&:code_lists).inject(&:|) end |
- (SegmentDef) copy(changes = {})
40 41 42 43 44 45 46 47 48 |
# File 'lib/stupidedi/schema/segment_def.rb', line 40 def copy(changes = {}) SegmentDef.new \ changes.fetch(:id, @id), changes.fetch(:name, @name), changes.fetch(:purpose, @purpose), changes.fetch(:element_uses, @element_uses), changes.fetch(:syntax_notes, @syntax_notes), changes.fetch(:parent, @parent) end |
- (Values::SegmentVal) empty(usage)
56 57 58 |
# File 'lib/stupidedi/schema/segment_def.rb', line 56 def empty(usage) Values::SegmentVal.new([], usage) end |
- pretty_print(q)
This method returns an undefined value.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/stupidedi/schema/segment_def.rb', line 74 def pretty_print(q) q.text "SegmentDef[#{@id}]" q.group(2, "(", ")") do q.breakable "" @element_uses.each do |e| unless q.current_group.first? q.text "," q.breakable end q.pp e end end end |
- (Boolean) segment?
64 65 66 |
# File 'lib/stupidedi/schema/segment_def.rb', line 64 def segment? true end |
- (SegmentUse) use(position, requirement, repeat_count)
51 52 53 |
# File 'lib/stupidedi/schema/segment_def.rb', line 51 def use(position, requirement, repeat_count) SegmentUse.new(self, position, requirement, repeat_count, nil) end |
- value(element_vals, usage, position)
60 61 62 |
# File 'lib/stupidedi/schema/segment_def.rb', line 60 def value(element_vals, usage, position) Values::SegmentVal.new(element_vals, usage, position) end |