Sha256: 8cc9aa8a3953d0f6a177f64142dbfa1ceaafe2dce0384774016a98a9bd5795f1

Contents?: true

Size: 1.27 KB

Versions: 16

Compression:

Stored size: 1.27 KB

Contents

#include <xml_xpath.h>

static void deallocate(xmlXPathObjectPtr xpath)
{
  NOKOGIRI_DEBUG_START(xpath);
  xmlXPathFreeNodeSetList(xpath); // despite the name, this frees the xpath but not the contained node set
  NOKOGIRI_DEBUG_END(xpath);
}

VALUE Nokogiri_wrap_xml_xpath(xmlXPathObjectPtr xpath)
{
  return Data_Wrap_Struct(cNokogiriXmlXpath, 0, deallocate, xpath);
}

/*
 * call-seq:
 *  node_set
 *
 * Fetch the node set associated with this xpath context.
 */
static VALUE node_set(VALUE self)
{
  xmlXPathObjectPtr xpath;
  Data_Get_Struct(self, xmlXPathObject, xpath);

  VALUE node_set = Qnil;

  if (xpath->nodesetval)
    node_set = Nokogiri_wrap_xml_node_set(xpath->nodesetval);

  if(NIL_P(node_set))
    node_set = Nokogiri_wrap_xml_node_set(xmlXPathNodeSetCreate(NULL));

  rb_funcall(node_set, rb_intern("document="), 1, rb_iv_get(self, "@document"));

  return node_set;
}

VALUE cNokogiriXmlXpath;
void init_xml_xpath(void)
{
  VALUE module = rb_define_module("Nokogiri");
  VALUE xml = rb_define_module_under(module, "XML");

  /*
   * This class wraps an XPath object and should only be instantiated from
   * XPathContext.
   */
  VALUE klass = rb_define_class_under(xml, "XPath", rb_cObject);

  cNokogiriXmlXpath = klass;
  rb_define_method(klass, "node_set", node_set, 0);
}

Version data entries

16 entries across 16 versions & 6 rubygems

Version Path
rubyjedi-nokogiri_java-1.4.0.20100513161003-java ext/nokogiri/xml_xpath.c
jwagener-nokogiri-1.4.1 ext/nokogiri/xml_xpath.c
revo-nokogiri-1.4.1-java ext/nokogiri/xml_xpath.c
revo-nokogiri-1.4.0.3-java ext/nokogiri/xml_xpath.c
revo-nokogiri-1.4.0-java ext/nokogiri/xml_xpath.c
revo-nokogiri-1.4.0.20100202165440-java ext/nokogiri/xml_xpath.c
nokogiri-1.4.1-x86-mswin32 ext/nokogiri/xml_xpath.c
nokogiri-1.4.1-x86-mingw32 ext/nokogiri/xml_xpath.c
nokogiri-1.4.1-java ext/nokogiri/xml_xpath.c
nokogiri-1.4.1 ext/nokogiri/xml_xpath.c
superfeedr-nokogiri-1.4.0.20091116183308 ext/nokogiri/xml_xpath.c
caring-nokogiri-1.4.1.pre1 ext/nokogiri/xml_xpath.c
nokogiri-1.4.0-java ext/nokogiri/xml_xpath.c
nokogiri-1.4.0-x86-mswin32 ext/nokogiri/xml_xpath.c
nokogiri-1.4.0-x86-mingw32 ext/nokogiri/xml_xpath.c
nokogiri-1.4.0 ext/nokogiri/xml_xpath.c