class HrrRbNetconf::Server::Filter::Xpath
Constants
- TYPE
Public Class Methods
add_ancestors_recursively(selected_element_xpaths, output_e, raw_output_e)
click to toggle source
# File lib/hrr_rb_netconf/server/filter/xpath.rb, line 47 def add_ancestors_recursively selected_element_xpaths, output_e, raw_output_e if raw_output_e == raw_output_e.root_node output_e else parent_e = add_ancestors_recursively selected_element_xpaths, output_e, raw_output_e.parent add_elem selected_element_xpaths, parent_e, raw_output_e end end
add_elem(selected_element_xpaths, output_e, raw_output_e)
click to toggle source
# File lib/hrr_rb_netconf/server/filter/xpath.rb, line 36 def add_elem selected_element_xpaths, output_e, raw_output_e xpath, elem = selected_element_xpaths.find{ |xpath, elem| xpath == raw_output_e.xpath } unless xpath child_output_e = output_e.add raw_output_e.clone selected_element_xpaths.push [raw_output_e.xpath, child_output_e] child_output_e else elem end end
filter(raw_output_e, filter_e)
click to toggle source
# File lib/hrr_rb_netconf/server/filter/xpath.rb, line 13 def filter raw_output_e, filter_e xpath = filter_e.attributes['select'] unless xpath raise Error['missing-attribute'].new('protocol', 'error', info: {'bad-attribute' => 'select', 'bad-element' => 'filter'}) end raw_output_xml_doc = REXML::Document.new raw_output_xml_doc.add raw_output_e.deep_clone selected_element_xpaths = [] output_xml_doc = REXML::Document.new raw_output_xml_doc.each_element(xpath){ |e| ctx_output_e = add_ancestors_recursively selected_element_xpaths, output_xml_doc, e e.children.each{ |c| case c when REXML::Parent ctx_output_e.add c.deep_clone else ctx_output_e.add c.clone end } } output_xml_doc.root end