Module: Nokogiri

Defined in:
lib/nokogiri.rb,
lib/nokogiri/css.rb,
lib/nokogiri/xml.rb,
lib/nokogiri/html.rb,
lib/nokogiri/xslt.rb,
lib/nokogiri/gumbo.rb,
lib/nokogiri/html4.rb,
lib/nokogiri/html5.rb,
lib/nokogiri/xml/dtd.rb,
lib/nokogiri/css/node.rb,
lib/nokogiri/xml/attr.rb,
lib/nokogiri/xml/node.rb,
lib/nokogiri/xml/text.rb,
lib/nokogiri/xml/cdata.rb,
lib/nokogiri/xml/xpath.rb,
lib/nokogiri/css/parser.rb,
lib/nokogiri/css/parser.rb,
lib/nokogiri/html5/node.rb,
lib/nokogiri/xml/reader.rb,
lib/nokogiri/xml/schema.rb,
lib/nokogiri/xml/builder.rb,
lib/nokogiri/xml/pp/node.rb,
lib/nokogiri/syntax_error.rb,
lib/nokogiri/version/info.rb,
lib/nokogiri/xml/document.rb,
lib/nokogiri/xml/node_set.rb,
lib/nokogiri/xml/notation.rb,
lib/nokogiri/xml/relax_ng.rb,
lib/nokogiri/css/tokenizer.rb,
lib/nokogiri/html4/builder.rb,
lib/nokogiri/xml/namespace.rb,
lib/nokogiri/class_resolver.rb,
lib/nokogiri/html4/document.rb,
lib/nokogiri/html5/document.rb,
lib/nokogiri/xml/sax/parser.rb,
lib/nokogiri/xml/searchable.rb,
lib/nokogiri/decorators/slop.rb,
lib/nokogiri/xml/entity_decl.rb,
lib/nokogiri/xslt/stylesheet.rb,
lib/nokogiri/css/syntax_error.rb,
lib/nokogiri/encoding_handler.rb,
lib/nokogiri/html4/sax/parser.rb,
lib/nokogiri/version/constant.rb,
lib/nokogiri/xml/element_decl.rb,
lib/nokogiri/xml/sax/document.rb,
lib/nokogiri/xml/syntax_error.rb,
lib/nokogiri/css/parser_extras.rb,
lib/nokogiri/css/xpath_visitor.rb,
lib/nokogiri/xml/parse_options.rb,
lib/nokogiri/xml/xpath_context.rb,
lib/nokogiri/xml/attribute_decl.rb,
lib/nokogiri/xml/character_data.rb,
lib/nokogiri/html4/entity_lookup.rb,
lib/nokogiri/jruby/nokogiri_jars.rb,
lib/nokogiri/xml/element_content.rb,
lib/nokogiri/xml/sax/push_parser.rb,
lib/nokogiri/xml/entity_reference.rb,
lib/nokogiri/html4/encoding_reader.rb,
lib/nokogiri/html4/sax/push_parser.rb,
lib/nokogiri/xml/document_fragment.rb,
lib/nokogiri/xml/node/save_options.rb,
lib/nokogiri/xml/pp/character_data.rb,
lib/nokogiri/xml/sax/parser_context.rb,
lib/nokogiri/xml/xpath/syntax_error.rb,
lib/nokogiri/html4/document_fragment.rb,
lib/nokogiri/html5/document_fragment.rb,
lib/nokogiri/html4/sax/parser_context.rb,
lib/nokogiri/html4/element_description.rb,
lib/nokogiri/xml/processing_instruction.rb,
lib/nokogiri/html4/element_description_defaults.rb,
ext/nokogiri/nokogiri.c

Overview

– DO NOT MODIFY!!!! This file is automatically generated by rex 1.0.7 from lexical definition file “lib/nokogiri/css/tokenizer.rex”. ++

Defined Under Namespace

Modules: CSS, ClassResolver, Decorators, Gumbo, HTML, HTML4, HTML5, Test, XML, XSLT Classes: EncodingHandler, SyntaxError, VersionInfo

Constant Summary collapse

VERSION_INFO =

Detailed version info about Nokogiri and the installed extension dependencies.

VersionInfo.instance.to_hash
VERSION =

The version of Nokogiri you are using

"1.16.0.dev"
JAR_DEPENDENCIES =

generated by the :vendor_jars rake task

{
  "isorelax:isorelax" => "20030108",
  "net.sf.saxon:Saxon-HE" => "9.6.0-4",
  "net.sourceforge.htmlunit:neko-htmlunit" => "2.63.0",
  "nu.validator:jing" => "20200702VNU",
  "org.nokogiri:nekodtd" => "0.1.11.noko2",
  "xalan:serializer" => "2.7.3",
  "xalan:xalan" => "2.7.3",
  "xerces:xercesImpl" => "2.12.2",
  "xml-apis:xml-apis" => "1.4.01",
}.freeze
XERCES_VERSION =
JAR_DEPENDENCIES["xerces:xercesImpl"]
NEKO_VERSION =
JAR_DEPENDENCIES["net.sourceforge.htmlunit:neko-htmlunit"]

Class Method Summary collapse

Class Method Details

.HTML4(input, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block) ⇒ Object

:call-seq:

HTML4(input, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block) → Nokogiri::HTML4::Document

Parse HTML. Convenience method for Nokogiri::HTML4::Document.parse



10
11
12
# File 'lib/nokogiri/html4.rb', line 10

def HTML4(input, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block)
  Nokogiri::HTML4::Document.parse(input, url, encoding, options, &block)
end

.HTML5(input, url = nil, encoding = nil, **options, &block) ⇒ Object

Since v1.12.0

⚠ HTML5 functionality is not available when running JRuby.

Parse an HTML5 document. Convenience method for Nokogiri::HTML5::Document.parse



30
31
32
# File 'lib/nokogiri/html5.rb', line 30

def self.HTML5(input, url = nil, encoding = nil, **options, &block)
  Nokogiri::HTML5::Document.parse(input, url, encoding, **options, &block)
end

.install_default_aliasesObject

:nodoc:



96
97
98
99
# File 'lib/nokogiri.rb', line 96

def install_default_aliases
  warn("Nokogiri.install_default_aliases is deprecated and will be removed in a future version of Nokogiri. Please call Nokogiri::EncodingHandler.install_default_aliases instead.")
  Nokogiri::EncodingHandler.install_default_aliases
end

.jruby?Boolean

:nodoc:

Returns:

  • (Boolean)


205
206
207
# File 'lib/nokogiri/version/info.rb', line 205

def self.jruby?
  VersionInfo.instance.jruby?
end

.libxml2_patchesObject

:nodoc:



210
211
212
213
214
215
216
# File 'lib/nokogiri/version/info.rb', line 210

def self.libxml2_patches
  if VersionInfo.instance.libxml2_using_packaged?
    Nokogiri::VERSION_INFO["libxml"]["patches"]
  else
    []
  end
end

.make(input = nil, opts = {}, &blk) ⇒ Object

Create a new Nokogiri::XML::DocumentFragment



68
69
70
71
72
73
74
# File 'lib/nokogiri.rb', line 68

def make(input = nil, opts = {}, &blk)
  if input
    Nokogiri::HTML4.fragment(input).children.first
  else
    Nokogiri(&blk)
  end
end

.parse(string, url = nil, encoding = nil, options = nil) ⇒ Object

Parse an HTML or XML document. string contains the document.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/nokogiri.rb', line 42

def parse(string, url = nil, encoding = nil, options = nil)
  if string.respond_to?(:read) ||
      /^\s*<(?:!DOCTYPE\s+)?html[\s>]/i.match?(string[0, 512])
    # Expect an HTML indicator to appear within the first 512
    # characters of a document. (<?xml ?> + <?xml-stylesheet ?>
    # shouldn't be that long)
    Nokogiri.HTML4(
      string,
      url,
      encoding,
      options || XML::ParseOptions::DEFAULT_HTML,
    )
  else
    Nokogiri.XML(
      string,
      url,
      encoding,
      options || XML::ParseOptions::DEFAULT_XML,
    )
  end.tap do |doc|
    yield doc if block_given?
  end
end

.Slop(*args, &block) ⇒ Object

Parse a document and add the Slop decorator. The Slop decorator implements method_missing such that methods may be used instead of CSS or XPath. For example:

doc = Nokogiri::Slop(<<-eohtml)
  <html>
    <body>
      <p>first</p>
      <p>second</p>
    </body>
  </html>
eohtml
assert_equal('second', doc.html.body.p[1].text)


91
92
93
# File 'lib/nokogiri.rb', line 91

def Slop(*args, &block)
  Nokogiri(*args, &block).slop!
end

.uses_gumbo?Boolean

:nodoc:

Returns:

  • (Boolean)


200
201
202
# File 'lib/nokogiri/version/info.rb', line 200

def self.uses_gumbo?
  uses_libxml? # TODO: replace with Gumbo functionality
end

.uses_libxml?(requirement = nil) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)


192
193
194
195
196
197
# File 'lib/nokogiri/version/info.rb', line 192

def self.uses_libxml?(requirement = nil)
  return false unless VersionInfo.instance.libxml2?
  return true unless requirement

  Gem::Requirement.new(requirement).satisfied_by?(VersionInfo.instance.loaded_libxml_version)
end

.XML(thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_XML, &block) ⇒ Object

Parse XML. Convenience method for Nokogiri::XML::Document.parse



7
8
9
# File 'lib/nokogiri/xml.rb', line 7

def XML(thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_XML, &block)
  Nokogiri::XML::Document.parse(thing, url, encoding, options, &block)
end

.XSLT(stylesheet, modules = {}) ⇒ Object

Create a Nokogiri::XSLT::Stylesheet with stylesheet.

Example:

xslt = Nokogiri::XSLT(File.read(ARGV[0]))


13
14
15
# File 'lib/nokogiri/xslt.rb', line 13

def XSLT(stylesheet, modules = {})
  XSLT.parse(stylesheet, modules)
end