Class: XSD::NamedElements

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/xsd/namedelements.rb

Constant Summary collapse

Empty =
NamedElements.new.freeze

Instance Method Summary collapse

Constructor Details

#initializeNamedElements

Returns a new instance of NamedElements.



15
16
17
18
# File 'lib/xsd/namedelements.rb', line 15

def initialize
  @elements = []
  @cache = {}
end

Instance Method Details

#+(rhs) ⇒ Object



71
72
73
74
75
# File 'lib/xsd/namedelements.rb', line 71

def +(rhs)
  o = NamedElements.new
  o.elements = @elements + rhs.elements
  o
end

#<<(rhs) ⇒ Object



62
63
64
65
# File 'lib/xsd/namedelements.rb', line 62

def <<(rhs)
  @elements << rhs
  self
end

#[](idx) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/xsd/namedelements.rb', line 40

def [](idx)
  if idx.is_a?(Numeric)
    @elements[idx]
  else
    @cache[idx] ||= @elements.find { |item| item.name == idx }
  end
end

#concat(rhs) ⇒ Object



77
78
79
80
# File 'lib/xsd/namedelements.rb', line 77

def concat(rhs)
  @elements.concat(rhs.elements)
  self
end

#delete(rhs) ⇒ Object



67
68
69
# File 'lib/xsd/namedelements.rb', line 67

def delete(rhs)
  @elements.delete(rhs)
end

#dupObject



20
21
22
23
24
# File 'lib/xsd/namedelements.rb', line 20

def dup
  o = NamedElements.new
  o.elements = @elements.dup
  o
end

#eachObject



56
57
58
59
60
# File 'lib/xsd/namedelements.rb', line 56

def each
  @elements.each do |element|
    yield(element)
  end
end

#empty?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/xsd/namedelements.rb', line 32

def empty?
  size == 0
end

#find_name(name) ⇒ Object



48
49
50
# File 'lib/xsd/namedelements.rb', line 48

def find_name(name)
  @elements.find { |item| item.name.name == name }
end

#freezeObject



26
27
28
29
30
# File 'lib/xsd/namedelements.rb', line 26

def freeze
  super
  @elements.freeze
  self
end

#keysObject



52
53
54
# File 'lib/xsd/namedelements.rb', line 52

def keys
  collect { |element| element.name }
end

#sizeObject



36
37
38
# File 'lib/xsd/namedelements.rb', line 36

def size
  @elements.size
end