Module: Nokogiri::LibXML

Extended by:
FFI::Library
Defined in:
lib/nokogiri/ffi/structs/xml_ns.rb,
lib/nokogiri/ffi/libxml.rb,
lib/nokogiri/ffi/libxml.rb,
lib/nokogiri/ffi/structs/xml_dtd.rb,
lib/nokogiri/ffi/structs/xml_attr.rb,
lib/nokogiri/ffi/structs/xml_node.rb,
lib/nokogiri/ffi/structs/xml_alloc.rb,
lib/nokogiri/ffi/structs/xml_buffer.rb,
lib/nokogiri/ffi/structs/xml_entity.rb,
lib/nokogiri/ffi/structs/xml_schema.rb,
lib/nokogiri/ffi/structs/common_node.rb,
lib/nokogiri/ffi/structs/xml_element.rb,
lib/nokogiri/ffi/structs/xml_document.rb,
lib/nokogiri/ffi/structs/xml_node_set.rb,
lib/nokogiri/ffi/structs/xml_notation.rb,
lib/nokogiri/ffi/structs/xml_relax_ng.rb,
lib/nokogiri/ffi/structs/xml_attribute.rb,
lib/nokogiri/ffi/structs/html_elem_desc.rb,
lib/nokogiri/ffi/structs/xml_enumeration.rb,
lib/nokogiri/ffi/structs/xml_sax_handler.rb,
lib/nokogiri/ffi/structs/xml_text_reader.rb,
lib/nokogiri/ffi/structs/xslt_stylesheet.rb,
lib/nokogiri/ffi/structs/html_entity_desc.rb,
lib/nokogiri/ffi/structs/xml_parser_input.rb,
lib/nokogiri/ffi/structs/xml_syntax_error.rb,
lib/nokogiri/ffi/structs/xml_xpath_object.rb,
lib/nokogiri/ffi/structs/xml_xpath_context.rb,
lib/nokogiri/ffi/structs/xml_parser_context.rb,
lib/nokogiri/ffi/structs/xml_element_content.rb,
lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb,
lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb,
lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb

Overview

:stopdoc:

Defined Under Namespace

Modules: CommonNode, XmlDocumentMixin, XmlNodeSetMixin, XmlXpathContextMixin Classes: HtmlElemDesc, HtmlEntityDesc, XmlAlloc, XmlAttr, XmlAttribute, XmlBuffer, XmlCharEncodingHandler, XmlDocument, XmlDocumentCast, XmlDtd, XmlElement, XmlElementContent, XmlEntity, XmlEnumeration, XmlNode, XmlNodeSet, XmlNodeSetCast, XmlNotation, XmlNs, XmlParserContext, XmlParserInput, XmlRelaxNG, XmlSaxHandler, XmlSaxPushParserContext, XmlSchema, XmlSyntaxError, XmlTextReader, XmlXpathContext, XmlXpathContextCast, XmlXpathObject, XmlXpathParserContext, XsltStylesheet

Constant Summary collapse

XML_CHAR_ENCODING_ERROR =
-1
POINTER_SIZE =

helpers

FFI.type_size(:pointer)
HtmlDocument =

implemented identically in libxml2.6

XmlDocument
HtmlDocumentCast =

implemented identically in libxml2.6

XmlDocumentCast

Class Method Summary collapse

Class Method Details

.pointer_offset(n) ⇒ Object



320
321
322
# File 'lib/nokogiri/ffi/libxml.rb', line 320

def self.pointer_offset(n)
  n * POINTER_SIZE # byte offset of nth pointer in an array of pointers
end

.xmlFirstElementChildHack(parent) ⇒ Object



326
327
328
329
330
# File 'lib/nokogiri/ffi/libxml.rb', line 326

def xmlFirstElementChildHack(parent)
  return nil if parent.nil?
  return nil unless [Nokogiri::XML::Node::ELEMENT_NODE, Nokogiri::XML::Node::ENTITY_NODE, Nokogiri::XML::Node::DOCUMENT_NODE, Nokogiri::XML::Node::HTML_DOCUMENT_NODE].include?(parent.type)
  parent.children.find { |child| child.element? }
end

.xmlFree(pointer) ⇒ Object



230
231
232
233
# File 'lib/nokogiri/ffi/libxml.rb', line 230

def self.xmlFree(pointer)
  # xmlFree is a C preprocessor macro, not an actual function
  self.free(pointer)
end

.xmlLastElementChildHack(parent) ⇒ Object



332
333
334
335
336
# File 'lib/nokogiri/ffi/libxml.rb', line 332

def xmlLastElementChildHack(parent)
  return nil if parent.nil?
  return nil unless [Nokogiri::XML::Node::ELEMENT_NODE, Nokogiri::XML::Node::ENTITY_NODE, Nokogiri::XML::Node::DOCUMENT_NODE, Nokogiri::XML::Node::HTML_DOCUMENT_NODE].include?(parent.type)
  parent.children.reverse.find { |child| child.element? }
end

.xmlNextElementSiblingHack(sibling) ⇒ Object



338
339
340
341
342
343
344
345
# File 'lib/nokogiri/ffi/libxml.rb', line 338

def xmlNextElementSiblingHack(sibling)
  return nil if sibling.nil?
  return nil unless [Nokogiri::XML::Node::ELEMENT_NODE, Nokogiri::XML::Node::ENTITY_NODE, Nokogiri::XML::Node::DOCUMENT_NODE, Nokogiri::XML::Node::HTML_DOCUMENT_NODE].include?(sibling.type)
  while (sibling = sibling.next_sibling)
    return sibling if sibling.element?
  end
  nil
end

.xmlXPathReturnFalse(ctx) ⇒ Object



217
218
219
# File 'lib/nokogiri/ffi/libxml.rb', line 217

def xmlXPathReturnFalse(ctx)
  valuePush(ctx, xmlXPathNewBoolean(0))
end

.xmlXPathReturnNodeSet(ctx, ns) ⇒ Object

these functions are implemented as C macros



211
212
213
# File 'lib/nokogiri/ffi/libxml.rb', line 211

def xmlXPathReturnNodeSet(ctx, ns)
  valuePush(ctx, xmlXPathWrapNodeSet(ns))
end

.xmlXPathReturnNumber(ctx, val) ⇒ Object



223
224
225
# File 'lib/nokogiri/ffi/libxml.rb', line 223

def xmlXPathReturnNumber(ctx, val)
  valuePush(ctx, xmlXPathNewFloat(val))
end

.xmlXPathReturnString(ctx, str) ⇒ Object



220
221
222
# File 'lib/nokogiri/ffi/libxml.rb', line 220

def xmlXPathReturnString(ctx, str)
  valuePush(ctx, xmlXPathWrapString(str))
end

.xmlXPathReturnTrue(ctx) ⇒ Object



214
215
216
# File 'lib/nokogiri/ffi/libxml.rb', line 214

def xmlXPathReturnTrue(ctx)
  valuePush(ctx, xmlXPathNewBoolean(1))
end