class Mixml::Selection

Selection of XML nodes

Attributes

nodesets[R]

@return [Nokogiri::XML::NodeSet] Selected nodes

Public Class Methods

new(nodesets) click to toggle source

Initialize a new selection

@param nodesets [Array<Nokogiri::XML::NodeSet>] Selected nodes

# File lib/mixml/selection.rb, line 13
def initialize(nodesets)
    @nodesets = nodesets
end

Public Instance Methods

append(template) click to toggle source

Append children to node

@param template [Template::Base] Template to replace nodes with

# File lib/mixml/selection.rb, line 57
def append(template)
    template = template.to_mixml_template

    each_node do |node|
        value = template.evaluate(node)
        node << value
    end
end
remove() click to toggle source

Remove selected nodes from the document

# File lib/mixml/selection.rb, line 18
def remove
    each_node do |node|
        node.remove
    end
end
rename(template) click to toggle source

Rename selected nodes with a template

@param template [Template::Base] Template for new name

# File lib/mixml/selection.rb, line 81
def rename(template)
    template = template.to_mixml_template

    each_node do |node|
        value = template.evaluate(node)
        node.name = value
    end
end
replace(template) click to toggle source

Replace selected nodes with a template

@param template [Template::Base] Template to replace nodes with

# File lib/mixml/selection.rb, line 45
def replace(template)
    template = template.to_mixml_template

    each_node do |node|
        value = template.evaluate(node)
        node.replace(value)
    end
end
value(template) click to toggle source

Set the value selected nodes with a template

@param template [Template::Base] Template to set the value

# File lib/mixml/selection.rb, line 69
def value(template)
    template = template.to_mixml_template

    each_node do |node|
        value = template.evaluate(node)
        node.value = value
    end
end
write(template = nil) click to toggle source

Print selected nodes to stdout

@param template [Template::Base] Template to evaluate and print

# File lib/mixml/selection.rb, line 27
def write(template = nil)
    if not template.nil? then
        template = template.to_mixml_template
    end

    each_node do |node|
        if template.nil? then
            node.write_xml_to($stdout)
            puts
        else
            puts template.evaluate(node)
        end
    end
end

Protected Instance Methods

each_node() { |node| ... } click to toggle source

Execute a block for each node

@yield Block to execute for each node @yieldparam node [Nokogiri::XML::Node] Current node

# File lib/mixml/selection.rb, line 96
def each_node
    @nodesets.each do |nodeset|
        nodeset.each do |node|
            yield node
        end
    end
end