Class: Stupidedi::Values::RepeatedElementVal

Inherits:
AbstractElementVal show all
Defined in:
lib/stupidedi/values/repeated_element_val.rb

Overview

See Also:

  • B.1.1.3.2 Repeating Data Elements

Instance Attribute Summary collapse

Constructors collapse

Instance Method Summary collapse

Methods inherited from AbstractElementVal

#element?, #size

Methods inherited from AbstractVal

#blank?, #characters, #component?, #composite?, #definition, #element?, #functional_group?, #interchange?, #invalid?, #loop?, #present?, #segment?, #separator?, #simple?, #size, #table?, #transaction_set?, #transmission?, #valid?

Methods included from Color

ansi, #ansi

Methods included from Inspect

#inspect

Constructor Details

#initialize(children, usage) ⇒ RepeatedElementVal

Returns a new instance of RepeatedElementVal.



24
25
26
27
# File 'lib/stupidedi/values/repeated_element_val.rb', line 24

def initialize(children, usage)
  @children, @usage =
    children, usage
end

Instance Attribute Details

#childrenArray<AbstractElementVal> (readonly) Also known as: element_vals

Returns:



16
17
18
# File 'lib/stupidedi/values/repeated_element_val.rb', line 16

def children
  @children
end

#usageSchema::SimpleElementUse, Schema::CompositeElementUse (readonly)

Returns Schema::SimpleElementUse, Schema::CompositeElementUse.

Returns:



20
21
22
# File 'lib/stupidedi/values/repeated_element_val.rb', line 20

def usage
  @usage
end

Class Method Details

.build(children, element_use) ⇒ RepeatedElementVal

Returns:



104
105
106
# File 'lib/stupidedi/values/repeated_element_val.rb', line 104

def build(children, element_use)
  RepeatedElementVal.new(children, element_use)
end

.empty(element_use) ⇒ RepeatedElementVal

Returns:



99
100
101
# File 'lib/stupidedi/values/repeated_element_val.rb', line 99

def empty(element_use)
  RepeatedElementVal.new([], element_use)
end

Instance Method Details

#==(other) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
90
91
# File 'lib/stupidedi/values/repeated_element_val.rb', line 87

def ==(other)
  eql?(other)
   (other.definition == definition and
    other.children   == @children)
end

#copy(changes = {}) ⇒ RepeatedElementVal

Returns:



30
31
32
33
34
# File 'lib/stupidedi/values/repeated_element_val.rb', line 30

def copy(changes = {})
  RepeatedElementVal.new \
    changes.fetch(:children, @children),
    changes.fetch(:usage, @usage)
end

#element(n, o = nil) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/stupidedi/values/repeated_element_val.rb', line 51

def element(n, o = nil)
  unless n > 0
    raise ArgumentError,
      "n must be positive"
  end

  unless o.nil?
    @children.at(n - 1).element(o)
  else
    @children.at(n - 1)
  end
end

#empty?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/stupidedi/values/repeated_element_val.rb', line 47

def empty?
  @children.empty? or @children.all?(&:empty?)
end

#leaf?Boolean

Returns false.

Returns:

  • (Boolean)

    false



37
38
39
# File 'lib/stupidedi/values/repeated_element_val.rb', line 37

def leaf?
  false
end

#pretty_print(q) ⇒ void

This method returns an undefined value.



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/stupidedi/values/repeated_element_val.rb', line 65

def pretty_print(q)
  if @children.empty?
    id = definition.try do |d|
      ansi.bold("[#{d.id.to_s}: #{d.name.to_s}]")
    end
    q.text(ansi.repeated("RepeatedElementVal#{id}"))
  else
    q.text(ansi.repeated("RepeatedElementVal"))
    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

#repeated?Boolean

Returns true.

Returns:

  • (Boolean)

    true



42
43
44
# File 'lib/stupidedi/values/repeated_element_val.rb', line 42

def repeated?
  true
end