module OpenNebula::ParsePoolBase

vmpool, imagepool, templatepool, vnpool, documentpool

Attributes

pool[RW]

Public Class Methods

new(pool_name, elem_name) click to toggle source
# File lib/opennebula/xml_utils.rb, line 49
def initialize (pool_name, elem_name)
    @current = 0
    @levels  = [{}]
    @pool    = Array.new

    @pool_name = pool_name
    @elem_name = elem_name
end

Public Instance Methods

characters(s) click to toggle source
# File lib/opennebula/xml_utils.rb, line 67
def characters(s)
    @value = s
end
end_element(name) click to toggle source
# File lib/opennebula/xml_utils.rb, line 71
def end_element(name)
    if @levels[@current].empty?
        @levels[@current-1][name] = @value || {}
    else
        if @levels[@current-1][name]
            @levels[@current-1][name] = [@levels[@current-1][name], @levels[@current]].flatten
        else
            @levels[@current-1][name] = @levels[@current]
        end

        @levels[@current] = Hash.new
    end

    if name == @elem_name
        @pool << @levels[0][@elem_name]

        @current   = 0
        @levels[0] = Hash.new
    else
        @current = @current -1
    end
end
start_element(name, attrs = []) click to toggle source
# File lib/opennebula/xml_utils.rb, line 58
def start_element(name, attrs = [])
    return if name == @pool_name
    @value = nil

    @current = @current + 1

    @levels[@current] = Hash.new if @levels[@current].nil?
end