Class: Stupidedi::Values::CompositeElementVal
Overview
Instance Attribute Summary collapse
Instance Method Summary
collapse
#element?, #size
Methods inherited from AbstractVal
#blank?, #characters, #component?, #element?, #empty?, #functional_group?, #interchange?, #invalid?, #loop?, #present?, #repeated?, #segment?, #separator?, #simple?, #size, #table?, #transaction_set?, #transmission?, #valid?
Methods included from Color
ansi, #ansi
Methods included from Inspect
#inspect
Constructor Details
Returns a new instance of CompositeElementVal.
21
22
23
24
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 21
def initialize(children, usage)
@children, @usage =
children, usage
end
|
Instance Attribute Details
#children ⇒ Array<SimpleElementVal>
Also known as:
component_vals
13
14
15
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 13
def children
@children
end
|
#usage ⇒ CompositeElementUse
17
18
19
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 17
def usage
@usage
end
|
Instance Method Details
#==(other) ⇒ Boolean
87
88
89
90
91
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 87
def ==(other)
eql?(other) or
(other.definition == definition and
other.children == @children)
end
|
#composite? ⇒ Boolean
40
41
42
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 40
def composite?
true
end
|
27
28
29
30
31
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 27
def copy(changes = {})
CompositeElementVal.new \
changes.fetch(:children, @children),
changes.fetch(:usage, @usage)
end
|
#definition ⇒ CompositeElementDef
10
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 10
delegate :definition, :to => :@usage
|
45
46
47
48
49
50
51
52
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 45
def element(n)
unless n > 0
raise ArgumentError,
"n must be positive"
end
@children.at(n - 1)
end
|
#leaf? ⇒ Boolean
34
35
36
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 34
def leaf?
false
end
|
#pretty_print(q) ⇒ void
This method returns an undefined value.
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/stupidedi/values/composite_element_val.rb', line 55
def pretty_print(q)
id = definition.bind do |d|
"[#{d.id}: #{d.name}]".bind do |s|
if usage.forbidden?
ansi.forbidden(s)
elsif usage.required?
ansi.required(s)
else
ansi.optional(s)
end
end
end
q.text(ansi.composite("CompositeElementVal#{id}"))
if empty?
q.text(ansi.composite(".empty"))
else
q.group(2, "(", ")") do
q.breakable ""
@children.each do |e|
unless q.current_group.first?
q.text ", "
q.breakable
end
q.pp e
end
end
end
end
|