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/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/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/html/builder.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/html/document.rb,
lib/nokogiri/xml/namespace.rb,
lib/nokogiri/html5/document.rb,
lib/nokogiri/xml/sax/parser.rb,
lib/nokogiri/xml/searchable.rb,
lib/nokogiri/decorators/slop.rb,
lib/nokogiri/html/sax/parser.rb,
lib/nokogiri/xml/entity_decl.rb,
lib/nokogiri/xslt/stylesheet.rb,
lib/nokogiri/css/syntax_error.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/html/entity_lookup.rb,
lib/nokogiri/xml/attribute_decl.rb,
lib/nokogiri/xml/character_data.rb,
lib/nokogiri/xml/element_content.rb,
lib/nokogiri/xml/sax/push_parser.rb,
lib/nokogiri/html/sax/push_parser.rb,
lib/nokogiri/xml/entity_reference.rb,
lib/nokogiri/xml/document_fragment.rb,
lib/nokogiri/xml/node/save_options.rb,
lib/nokogiri/xml/pp/character_data.rb,
lib/nokogiri/html/document_fragment.rb,
lib/nokogiri/xml/sax/parser_context.rb,
lib/nokogiri/xml/xpath/syntax_error.rb,
lib/nokogiri/html/sax/parser_context.rb,
lib/nokogiri/html5/document_fragment.rb,
lib/nokogiri/html/element_description.rb,
lib/nokogiri/xml/processing_instruction.rb,
lib/nokogiri/html/element_description_defaults.rb,
ext/nokogiri/nokogiri.c

Overview

Copyright 2013-2021 Sam Ruby, Stephen Checkoway

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Defined Under Namespace

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

Constant Summary collapse

VERSION_INFO =

More complete version information about libxml

VersionInfo.instance.to_hash
VERSION =

The version of Nokogiri you are using

"1.11.3"

Class Method Summary collapse

Class Method Details

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

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


15
16
17
# File 'lib/nokogiri/html.rb', line 15

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

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

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


24
25
26
# File 'lib/nokogiri/html5.rb', line 24

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

.install_default_aliasesObject


99
100
101
102
103
104
105
106
107
# File 'lib/nokogiri.rb', line 99

def install_default_aliases
  # Make sure to support some popular encoding aliases not known by
  # all iconv implementations.
  {
    'Windows-31J' => 'CP932',	# Windows-31J is the IANA registered name of CP932.
  }.each { |alias_name, name|
    EncodingHandler.alias(name, alias_name) if EncodingHandler[alias_name].nil?
  }
end

.jruby?Boolean

:nodoc:

Returns:

  • (Boolean)

197
198
199
# File 'lib/nokogiri/version/info.rb', line 197

def self.jruby? # :nodoc:
  VersionInfo.instance.jruby?
end

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

Create a new Nokogiri::XML::DocumentFragment


72
73
74
75
76
77
78
# File 'lib/nokogiri.rb', line 72

def make input = nil, opts = {}, &blk
  if input
    Nokogiri::HTML.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.


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/nokogiri.rb', line 54

def parse string, url = nil, encoding = nil, options = nil
  if string.respond_to?(:read) ||
      /^\s*<(?:!DOCTYPE\s+)?html[\s>]/i === 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.HTML(string, url, encoding,
      options || XML::ParseOptions::DEFAULT_HTML)
  else
    Nokogiri.XML(string, url, encoding,
      options || XML::ParseOptions::DEFAULT_XML)
  end.tap { |doc|
    yield doc if block_given?
  }
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)

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

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

.uses_gumbo?Boolean

Returns:

  • (Boolean)

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

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

.uses_libxml?(requirement = nil) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)

187
188
189
190
191
# File 'lib/nokogiri/version/info.rb', line 187

def self.uses_libxml?(requirement = nil) # :nodoc:
  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


35
36
37
# File 'lib/nokogiri/xml.rb', line 35

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