Class: Stupidedi::Values::CompositeElementVal

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

Overview

See Also:

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Methods inherited from AbstractElementVal

#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

- (CompositeElementVal) initialize(children, usage)

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

- (Array<SimpleElementVal>) children (readonly) Also known as: component_vals

Returns:



13
14
15
# File 'lib/stupidedi/values/composite_element_val.rb', line 13

def children
  @children
end

- (CompositeElementUse) usage (readonly)

Returns:

  • (CompositeElementUse)


17
18
19
# File 'lib/stupidedi/values/composite_element_val.rb', line 17

def usage
  @usage
end

Instance Method Details

- (Boolean) ==(other)

Returns:

  • (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

- (Boolean) composite?

Returns:

  • (Boolean)

    true

  • (Boolean)


40
41
42
# File 'lib/stupidedi/values/composite_element_val.rb', line 40

def composite?
  true
end

- (CompositeElementVal) copy(changes = {})

Returns:



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

- (CompositeElementDef) definition

Returns:

  • (CompositeElementDef)


10
# File 'lib/stupidedi/values/composite_element_val.rb', line 10

delegate :definition, :to => :@usage

- (SimpleElementVal) element(n)

Returns:



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

- (Boolean) leaf?

False

Returns:

  • (Boolean)

    false



34
35
36
# File 'lib/stupidedi/values/composite_element_val.rb', line 34

def leaf?
  false
end

- pretty_print(q)

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