/* * call-seq: * +(node_set) * * Concatenation - returns a new NodeSet built by concatenating the node set * with +node_set+ to produce a third NodeSet */ static VALUE plus(VALUE self, VALUE rb_other) { xmlNodeSetPtr node_set; xmlNodeSetPtr other; xmlNodeSetPtr new; if(! rb_funcall(rb_other, rb_intern("is_a?"), 1, cNokogiriXmlNodeSet)) rb_raise(rb_eArgError, "node_set must be a Nokogiri::XML::NodeSet"); Data_Get_Struct(self, xmlNodeSet, node_set); Data_Get_Struct(rb_other, xmlNodeSet, other); new = xmlXPathNodeSetMerge(NULL, node_set); new = xmlXPathNodeSetMerge(new, other); VALUE new_set = Nokogiri_wrap_xml_node_set(new); rb_iv_set(new_set, "@document", rb_iv_get(self, "@document")); return new_set; }