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/xml/sax.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/html5/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/css/selector_cache.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.17.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



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

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. Please call Nokogiri::EncodingHandler.install_default_aliases instead. This will become an error in Nokogiri v1.17.0.", uplevel: 1, category: :deprecated) # deprecated in v1.14.0, remove in v1.17.0
  Nokogiri::EncodingHandler.install_default_aliases
end

.jruby?Boolean

:nodoc:

Returns:

  • (Boolean)


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

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

.libxml2_patchesObject

:nodoc:



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

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)


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

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

.uses_libxml?(requirement = nil) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)


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

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