Class: Stupidedi::Schema::LoopDef
Overview
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Inspect
#inspect
Methods inherited from AbstractDef
#component?, #composite?, #definition?, #element?, #functional_group?, #interchange?, #repeated?, #segment?, #simple?, #table?, #transaction_set?, #usage?
Constructor Details
#initialize(id, repeat_count, header_segment_uses, loop_defs, trailer_segment_uses, parent) ⇒ LoopDef
Returns a new instance of LoopDef.
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/stupidedi/schema/loop_def.rb', line 33
def initialize(id, repeat_count, , loop_defs, trailer_segment_uses, parent)
@id, @repeat_count, @header_segment_uses, @loop_defs, @trailer_segment_uses, @parent =
id, repeat_count, , loop_defs, trailer_segment_uses, parent
unless parent.nil?
@header_segment_uses = @header_segment_uses.map{|x| x.copy(:parent => self) }
@loop_defs = @loop_defs.map{|x| x.copy(:parent => self) }
@trailer_segment_uses = @trailer_segment_uses.map{|x| x.copy(:parent => self) }
end
end
|
Instance Attribute Details
18
19
20
|
# File 'lib/stupidedi/schema/loop_def.rb', line 18
def
@header_segment_uses
end
|
12
13
14
|
# File 'lib/stupidedi/schema/loop_def.rb', line 12
def id
@id
end
|
24
25
26
|
# File 'lib/stupidedi/schema/loop_def.rb', line 24
def loop_defs
@loop_defs
end
|
27
28
29
|
# File 'lib/stupidedi/schema/loop_def.rb', line 27
def parent
@parent
end
|
15
16
17
|
# File 'lib/stupidedi/schema/loop_def.rb', line 15
def repeat_count
@repeat_count
end
|
21
22
23
|
# File 'lib/stupidedi/schema/loop_def.rb', line 21
def trailer_segment_uses
@trailer_segment_uses
end
|
Class Method Details
.build(id, repeat_count, *children) ⇒ LoopDef
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
# File 'lib/stupidedi/schema/loop_def.rb', line 132
def build(id, repeat_count, *children)
, children = children.split_when{|x| x.is_a?(LoopDef) }
loop_defs, trailer = children.split_when{|x| x.is_a?(SegmentUse) }
if .empty?
raise Exceptions::InvalidSchemaError,
"first child must be a SegmentUse"
elsif .head.repeat_count.include?(2)
"first child must have RepeatCount.bounded(1)"
end
new(id, repeat_count, , loop_defs, trailer, nil)
end
|
Instance Method Details
#bounded? ⇒ Boolean
63
64
65
66
|
# File 'lib/stupidedi/schema/loop_def.rb', line 63
def bounded?
@header_segment_uses.head.definition.id == :LS and
@trailer_segment_uses.last.definition.id == :LE
end
|
79
80
81
|
# File 'lib/stupidedi/schema/loop_def.rb', line 79
def children
@header_segment_uses + @loop_defs + @trailer_segment_uses
end
|
#code_lists ⇒ AbstractSet<CodeList>
93
94
95
|
# File 'lib/stupidedi/schema/loop_def.rb', line 93
def code_lists
children.map(&:code_lists).inject(&:|)
end
|
#copy(changes = {}) ⇒ LoopDef
47
48
49
50
51
52
53
54
55
|
# File 'lib/stupidedi/schema/loop_def.rb', line 47
def copy(changes = {})
LoopDef.new \
changes.fetch(:id, @id),
changes.fetch(:repeat_count, @repeat_count),
changes.fetch(:header_segment_uses, @header_segment_uses),
changes.fetch(:loop_defs, @loop_defs),
changes.fetch(:trailer_segment_uses, @trailer_segment_uses),
changes.fetch(:parent, @parent)
end
|
#empty ⇒ LoopVal
84
85
86
|
# File 'lib/stupidedi/schema/loop_def.rb', line 84
def empty
Values::LoopVal.new(self, [])
end
|
#entry_segment_use ⇒ SegmentUse
74
75
76
|
# File 'lib/stupidedi/schema/loop_def.rb', line 74
def entry_segment_use
@header_segment_uses.head
end
|
#hierarchical? ⇒ Boolean
69
70
71
|
# File 'lib/stupidedi/schema/loop_def.rb', line 69
def hierarchical?
@header_segment_uses.head.definition.id == :HL
end
|
#loop? ⇒ Boolean
88
89
90
|
# File 'lib/stupidedi/schema/loop_def.rb', line 88
def loop?
true
end
|
#pretty_print(q) ⇒ void
This method returns an undefined value.
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/stupidedi/schema/loop_def.rb', line 98
def pretty_print(q)
q.text("LoopDef[#{@id}]")
q.group(2, "(", ")") do
q.breakable ""
@header_segment_uses.each do |e|
unless q.current_group.first?
q.text ","
q.breakable
end
q.pp e
end
@loop_defs.each do |e|
unless q.current_group.first?
q.text ","
q.breakable
end
q.pp e
end
@trailer_segment_uses.each do |e|
unless q.current_group.first?
q.text ","
q.breakable
end
q.pp e
end
end
end
|
#repeatable? ⇒ Boolean
57
58
59
|
# File 'lib/stupidedi/schema/loop_def.rb', line 57
def repeatable?
@repeat_count.try{|r| r.include?(2) }
end
|