Class: Puppet::Pops::Containment::EAllContentsEnumerator

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/puppet/pops/containment.rb

Instance Method Summary collapse

Constructor Details

#initialize(o) ⇒ EAllContentsEnumerator

Returns a new instance of EAllContentsEnumerator.



14
15
16
# File 'lib/puppet/pops/containment.rb', line 14

def initialize o
  @element = o
end

Instance Method Details

#each(&block) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/puppet/pops/containment.rb', line 18

def each &block
  if block_given?
    eAllContents(@element, &block)
    @element
  else
    self
  end
end

#eAllContents(element, &block) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/puppet/pops/containment.rb', line 27

def eAllContents(element, &block)
  element.class.ecore.eAllReferences.select{|r| r.containment}.each do |r|
    children = element.getGenericAsArray(r.name)
    children.each do |c|
      block.call(c)
      eAllContents(c, &block)
    end
  end
end