nokogiri 1.10.10 → 1.14.3-aarch64-linux
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +44 -0
- data/LICENSE-DEPENDENCIES.md +1632 -1022
- data/LICENSE.md +1 -1
- data/README.md +185 -96
- data/bin/nokogiri +63 -50
- data/dependencies.yml +33 -66
- data/ext/nokogiri/depend +38 -358
- data/ext/nokogiri/extconf.rb +819 -421
- data/ext/nokogiri/gumbo.c +594 -0
- data/ext/nokogiri/html4_document.c +166 -0
- data/ext/nokogiri/html4_element_description.c +294 -0
- data/ext/nokogiri/html4_entity_lookup.c +37 -0
- data/ext/nokogiri/html4_sax_parser_context.c +114 -0
- data/ext/nokogiri/html4_sax_push_parser.c +95 -0
- data/ext/nokogiri/include/libexslt/exslt.h +108 -0
- data/ext/nokogiri/include/libexslt/exsltconfig.h +70 -0
- data/ext/nokogiri/include/libexslt/exsltexports.h +63 -0
- data/ext/nokogiri/include/libxml2/libxml/HTMLparser.h +306 -0
- data/ext/nokogiri/include/libxml2/libxml/HTMLtree.h +147 -0
- data/ext/nokogiri/include/libxml2/libxml/SAX.h +204 -0
- data/ext/nokogiri/include/libxml2/libxml/SAX2.h +172 -0
- data/ext/nokogiri/include/libxml2/libxml/c14n.h +128 -0
- data/ext/nokogiri/include/libxml2/libxml/catalog.h +182 -0
- data/ext/nokogiri/include/libxml2/libxml/chvalid.h +230 -0
- data/ext/nokogiri/include/libxml2/libxml/debugXML.h +217 -0
- data/ext/nokogiri/include/libxml2/libxml/dict.h +81 -0
- data/ext/nokogiri/include/libxml2/libxml/encoding.h +232 -0
- data/ext/nokogiri/include/libxml2/libxml/entities.h +153 -0
- data/ext/nokogiri/include/libxml2/libxml/globals.h +499 -0
- data/ext/nokogiri/include/libxml2/libxml/hash.h +236 -0
- data/ext/nokogiri/include/libxml2/libxml/list.h +137 -0
- data/ext/nokogiri/include/libxml2/libxml/nanoftp.h +186 -0
- data/ext/nokogiri/include/libxml2/libxml/nanohttp.h +81 -0
- data/ext/nokogiri/include/libxml2/libxml/parser.h +1244 -0
- data/ext/nokogiri/include/libxml2/libxml/parserInternals.h +656 -0
- data/ext/nokogiri/include/libxml2/libxml/pattern.h +100 -0
- data/ext/nokogiri/include/libxml2/libxml/relaxng.h +218 -0
- data/ext/nokogiri/include/libxml2/libxml/schemasInternals.h +958 -0
- data/ext/nokogiri/include/libxml2/libxml/schematron.h +142 -0
- data/ext/nokogiri/include/libxml2/libxml/threads.h +91 -0
- data/ext/nokogiri/include/libxml2/libxml/tree.h +1312 -0
- data/ext/nokogiri/include/libxml2/libxml/uri.h +94 -0
- data/ext/nokogiri/include/libxml2/libxml/valid.h +463 -0
- data/ext/nokogiri/include/libxml2/libxml/xinclude.h +129 -0
- data/ext/nokogiri/include/libxml2/libxml/xlink.h +189 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlIO.h +368 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlautomata.h +146 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlerror.h +947 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlexports.h +77 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlmemory.h +226 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlmodule.h +57 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlreader.h +428 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlregexp.h +222 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlsave.h +88 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlschemas.h +246 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlschemastypes.h +152 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlstring.h +140 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlunicode.h +202 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlversion.h +503 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlwriter.h +488 -0
- data/ext/nokogiri/include/libxml2/libxml/xpath.h +575 -0
- data/ext/nokogiri/include/libxml2/libxml/xpathInternals.h +632 -0
- data/ext/nokogiri/include/libxml2/libxml/xpointer.h +137 -0
- data/ext/nokogiri/include/libxslt/attributes.h +38 -0
- data/ext/nokogiri/include/libxslt/documents.h +93 -0
- data/ext/nokogiri/include/libxslt/extensions.h +262 -0
- data/ext/nokogiri/include/libxslt/extra.h +72 -0
- data/ext/nokogiri/include/libxslt/functions.h +78 -0
- data/ext/nokogiri/include/libxslt/imports.h +75 -0
- data/ext/nokogiri/include/libxslt/keys.h +53 -0
- data/ext/nokogiri/include/libxslt/namespaces.h +68 -0
- data/ext/nokogiri/include/libxslt/numbersInternals.h +73 -0
- data/ext/nokogiri/include/libxslt/pattern.h +84 -0
- data/ext/nokogiri/include/libxslt/preproc.h +43 -0
- data/ext/nokogiri/include/libxslt/security.h +104 -0
- data/ext/nokogiri/include/libxslt/templates.h +77 -0
- data/ext/nokogiri/include/libxslt/transform.h +207 -0
- data/ext/nokogiri/include/libxslt/variables.h +118 -0
- data/ext/nokogiri/include/libxslt/xslt.h +110 -0
- data/ext/nokogiri/include/libxslt/xsltInternals.h +1982 -0
- data/ext/nokogiri/include/libxslt/xsltconfig.h +179 -0
- data/ext/nokogiri/include/libxslt/xsltexports.h +64 -0
- data/ext/nokogiri/include/libxslt/xsltlocale.h +76 -0
- data/ext/nokogiri/include/libxslt/xsltutils.h +310 -0
- data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
- data/ext/nokogiri/nokogiri.c +228 -104
- data/ext/nokogiri/nokogiri.h +204 -90
- data/ext/nokogiri/test_global_handlers.c +40 -0
- data/ext/nokogiri/xml_attr.c +17 -17
- data/ext/nokogiri/xml_attribute_decl.c +22 -22
- data/ext/nokogiri/xml_cdata.c +15 -20
- data/ext/nokogiri/xml_comment.c +19 -26
- data/ext/nokogiri/xml_document.c +306 -225
- data/ext/nokogiri/xml_document_fragment.c +12 -16
- data/ext/nokogiri/xml_dtd.c +64 -58
- data/ext/nokogiri/xml_element_content.c +33 -28
- data/ext/nokogiri/xml_element_decl.c +26 -26
- data/ext/nokogiri/xml_encoding_handler.c +45 -20
- data/ext/nokogiri/xml_entity_decl.c +37 -35
- data/ext/nokogiri/xml_entity_reference.c +16 -18
- data/ext/nokogiri/xml_namespace.c +136 -61
- data/ext/nokogiri/xml_node.c +1344 -672
- data/ext/nokogiri/xml_node_set.c +178 -168
- data/ext/nokogiri/xml_processing_instruction.c +17 -19
- data/ext/nokogiri/xml_reader.c +316 -190
- data/ext/nokogiri/xml_relax_ng.c +52 -30
- data/ext/nokogiri/xml_sax_parser.c +130 -124
- data/ext/nokogiri/xml_sax_parser_context.c +110 -89
- data/ext/nokogiri/xml_sax_push_parser.c +36 -29
- data/ext/nokogiri/xml_schema.c +98 -50
- data/ext/nokogiri/xml_syntax_error.c +42 -21
- data/ext/nokogiri/xml_text.c +14 -18
- data/ext/nokogiri/xml_xpath_context.c +263 -148
- data/ext/nokogiri/xslt_stylesheet.c +271 -178
- data/gumbo-parser/CHANGES.md +63 -0
- data/gumbo-parser/Makefile +111 -0
- data/gumbo-parser/THANKS +27 -0
- data/lib/nokogiri/2.7/nokogiri.so +0 -0
- data/lib/nokogiri/3.0/nokogiri.so +0 -0
- data/lib/nokogiri/3.1/nokogiri.so +0 -0
- data/lib/nokogiri/3.2/nokogiri.so +0 -0
- data/lib/nokogiri/class_resolver.rb +67 -0
- data/lib/nokogiri/css/node.rb +10 -8
- data/lib/nokogiri/css/parser.rb +397 -377
- data/lib/nokogiri/css/parser.y +250 -245
- data/lib/nokogiri/css/parser_extras.rb +54 -49
- data/lib/nokogiri/css/syntax_error.rb +3 -1
- data/lib/nokogiri/css/tokenizer.rb +5 -3
- data/lib/nokogiri/css/tokenizer.rex +3 -2
- data/lib/nokogiri/css/xpath_visitor.rb +223 -94
- data/lib/nokogiri/css.rb +56 -17
- data/lib/nokogiri/decorators/slop.rb +9 -7
- data/lib/nokogiri/encoding_handler.rb +57 -0
- data/lib/nokogiri/extension.rb +32 -0
- data/lib/nokogiri/gumbo.rb +15 -0
- data/lib/nokogiri/html.rb +38 -27
- data/lib/nokogiri/{html → html4}/builder.rb +4 -2
- data/lib/nokogiri/html4/document.rb +214 -0
- data/lib/nokogiri/html4/document_fragment.rb +54 -0
- data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
- data/lib/nokogiri/html4/element_description_defaults.rb +572 -0
- data/lib/nokogiri/html4/encoding_reader.rb +121 -0
- data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
- data/lib/nokogiri/{html → html4}/sax/parser.rb +17 -16
- data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
- data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
- data/lib/nokogiri/html4.rb +47 -0
- data/lib/nokogiri/html5/document.rb +168 -0
- data/lib/nokogiri/html5/document_fragment.rb +90 -0
- data/lib/nokogiri/html5/node.rb +98 -0
- data/lib/nokogiri/html5.rb +389 -0
- data/lib/nokogiri/jruby/dependencies.rb +3 -0
- data/lib/nokogiri/jruby/nokogiri_jars.rb +43 -0
- data/lib/nokogiri/syntax_error.rb +2 -0
- data/lib/nokogiri/version/constant.rb +6 -0
- data/lib/nokogiri/version/info.rb +223 -0
- data/lib/nokogiri/version.rb +3 -108
- data/lib/nokogiri/xml/attr.rb +55 -3
- data/lib/nokogiri/xml/attribute_decl.rb +3 -1
- data/lib/nokogiri/xml/builder.rb +75 -34
- data/lib/nokogiri/xml/cdata.rb +3 -1
- data/lib/nokogiri/xml/character_data.rb +2 -0
- data/lib/nokogiri/xml/document.rb +312 -126
- data/lib/nokogiri/xml/document_fragment.rb +93 -48
- data/lib/nokogiri/xml/dtd.rb +4 -2
- data/lib/nokogiri/xml/element_content.rb +2 -0
- data/lib/nokogiri/xml/element_decl.rb +3 -1
- data/lib/nokogiri/xml/entity_decl.rb +4 -2
- data/lib/nokogiri/xml/entity_reference.rb +2 -0
- data/lib/nokogiri/xml/namespace.rb +45 -0
- data/lib/nokogiri/xml/node/save_options.rb +15 -8
- data/lib/nokogiri/xml/node.rb +1067 -406
- data/lib/nokogiri/xml/node_set.rb +135 -59
- data/lib/nokogiri/xml/notation.rb +13 -0
- data/lib/nokogiri/xml/parse_options.rb +145 -52
- data/lib/nokogiri/xml/pp/character_data.rb +9 -6
- data/lib/nokogiri/xml/pp/node.rb +27 -26
- data/lib/nokogiri/xml/pp.rb +4 -2
- data/lib/nokogiri/xml/processing_instruction.rb +4 -1
- data/lib/nokogiri/xml/reader.rb +21 -28
- data/lib/nokogiri/xml/relax_ng.rb +8 -2
- data/lib/nokogiri/xml/sax/document.rb +45 -49
- data/lib/nokogiri/xml/sax/parser.rb +39 -36
- data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
- data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
- data/lib/nokogiri/xml/sax.rb +6 -4
- data/lib/nokogiri/xml/schema.rb +19 -9
- data/lib/nokogiri/xml/searchable.rb +112 -72
- data/lib/nokogiri/xml/syntax_error.rb +6 -4
- data/lib/nokogiri/xml/text.rb +2 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
- data/lib/nokogiri/xml/xpath.rb +15 -4
- data/lib/nokogiri/xml/xpath_context.rb +3 -3
- data/lib/nokogiri/xml.rb +38 -37
- data/lib/nokogiri/xslt/stylesheet.rb +3 -1
- data/lib/nokogiri/xslt.rb +29 -20
- data/lib/nokogiri.rb +48 -72
- data/lib/xsd/xmlparser/nokogiri.rb +29 -25
- metadata +146 -307
- data/ext/nokogiri/html_document.c +0 -170
- data/ext/nokogiri/html_document.h +0 -10
- data/ext/nokogiri/html_element_description.c +0 -279
- data/ext/nokogiri/html_element_description.h +0 -10
- data/ext/nokogiri/html_entity_lookup.c +0 -32
- data/ext/nokogiri/html_entity_lookup.h +0 -8
- data/ext/nokogiri/html_sax_parser_context.c +0 -116
- data/ext/nokogiri/html_sax_parser_context.h +0 -11
- data/ext/nokogiri/html_sax_push_parser.c +0 -87
- data/ext/nokogiri/html_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_attr.h +0 -9
- data/ext/nokogiri/xml_attribute_decl.h +0 -9
- data/ext/nokogiri/xml_cdata.h +0 -9
- data/ext/nokogiri/xml_comment.h +0 -9
- data/ext/nokogiri/xml_document.h +0 -23
- data/ext/nokogiri/xml_document_fragment.h +0 -10
- data/ext/nokogiri/xml_dtd.h +0 -10
- data/ext/nokogiri/xml_element_content.h +0 -10
- data/ext/nokogiri/xml_element_decl.h +0 -9
- data/ext/nokogiri/xml_encoding_handler.h +0 -8
- data/ext/nokogiri/xml_entity_decl.h +0 -10
- data/ext/nokogiri/xml_entity_reference.h +0 -9
- data/ext/nokogiri/xml_io.c +0 -61
- data/ext/nokogiri/xml_io.h +0 -11
- data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
- data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
- data/ext/nokogiri/xml_namespace.h +0 -14
- data/ext/nokogiri/xml_node.h +0 -13
- data/ext/nokogiri/xml_node_set.h +0 -12
- data/ext/nokogiri/xml_processing_instruction.h +0 -9
- data/ext/nokogiri/xml_reader.h +0 -10
- data/ext/nokogiri/xml_relax_ng.h +0 -9
- data/ext/nokogiri/xml_sax_parser.h +0 -39
- data/ext/nokogiri/xml_sax_parser_context.h +0 -10
- data/ext/nokogiri/xml_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_schema.h +0 -9
- data/ext/nokogiri/xml_syntax_error.h +0 -13
- data/ext/nokogiri/xml_text.h +0 -9
- data/ext/nokogiri/xml_xpath_context.h +0 -10
- data/ext/nokogiri/xslt_stylesheet.h +0 -14
- data/lib/nokogiri/html/document.rb +0 -335
- data/lib/nokogiri/html/document_fragment.rb +0 -49
- data/lib/nokogiri/html/element_description_defaults.rb +0 -671
- data/lib/nokogiri/html/sax/parser_context.rb +0 -16
- data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
- data/patches/libxml2/0002-Remove-script-macro-support.patch +0 -40
- data/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi.patch +0 -44
- data/patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch +0 -25
- data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +0 -32
- data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
- data/ports/archives/libxslt-1.1.34.tar.gz +0 -0
data/lib/nokogiri/xslt.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module Nokogiri
|
4
5
|
class << self
|
@@ -9,7 +10,7 @@ module Nokogiri
|
|
9
10
|
#
|
10
11
|
# xslt = Nokogiri::XSLT(File.read(ARGV[0]))
|
11
12
|
#
|
12
|
-
def XSLT
|
13
|
+
def XSLT(stylesheet, modules = {})
|
13
14
|
XSLT.parse(stylesheet, modules)
|
14
15
|
end
|
15
16
|
end
|
@@ -21,36 +22,44 @@ module Nokogiri
|
|
21
22
|
class << self
|
22
23
|
###
|
23
24
|
# Parse the stylesheet in +string+, register any +modules+
|
24
|
-
def parse
|
25
|
+
def parse(string, modules = {})
|
25
26
|
modules.each do |url, klass|
|
26
|
-
XSLT.register
|
27
|
+
XSLT.register(url, klass)
|
27
28
|
end
|
28
29
|
|
30
|
+
doc = XML::Document.parse(string, nil, nil, XML::ParseOptions::DEFAULT_XSLT)
|
29
31
|
if Nokogiri.jruby?
|
30
|
-
Stylesheet.parse_stylesheet_doc(
|
32
|
+
Stylesheet.parse_stylesheet_doc(doc, string)
|
31
33
|
else
|
32
|
-
Stylesheet.parse_stylesheet_doc(
|
34
|
+
Stylesheet.parse_stylesheet_doc(doc)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
36
|
-
|
37
|
-
#
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
38
|
+
# :call-seq:
|
39
|
+
# quote_params(params) → Array
|
40
|
+
#
|
41
|
+
# Quote parameters in +params+ for stylesheet safety.
|
42
|
+
# See Nokogiri::XSLT::Stylesheet.transform for example usage.
|
43
|
+
#
|
44
|
+
# [Parameters]
|
45
|
+
# - +params+ (Hash, Array) XSLT parameters (key->value, or tuples of [key, value])
|
46
|
+
#
|
47
|
+
# [Returns] Array of string parameters, with quotes correctly escaped for use with XSLT::Stylesheet.transform
|
48
|
+
#
|
49
|
+
def quote_params(params)
|
50
|
+
params.flatten.each_slice(2).with_object([]) do |kv, quoted_params|
|
51
|
+
key, value = kv.map(&:to_s)
|
52
|
+
value = if /'/.match?(value)
|
53
|
+
"concat('#{value.gsub(/'/, %q{', "'", '})}')"
|
48
54
|
else
|
49
|
-
|
55
|
+
"'#{value}'"
|
50
56
|
end
|
57
|
+
quoted_params << key
|
58
|
+
quoted_params << value
|
51
59
|
end
|
52
|
-
parray.flatten
|
53
60
|
end
|
54
61
|
end
|
55
62
|
end
|
56
63
|
end
|
64
|
+
|
65
|
+
require_relative "xslt/stylesheet"
|
data/lib/nokogiri.rb
CHANGED
@@ -1,96 +1,65 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
|
4
|
-
require 'rbconfig'
|
1
|
+
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
5
3
|
|
6
4
|
if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
|
7
|
-
|
8
|
-
# unless defined?(JRuby::Rack::VERSION) || defined?(AppEngine::ApiProxy)
|
9
|
-
#
|
10
|
-
# However, simply cutting defined?(JRuby::Rack::VERSION) off resulted in
|
11
|
-
# an unable-to-load-nokogiri problem. Thus, now, Nokogiri checks the presense
|
12
|
-
# of appengine-rack.jar in $LOAD_PATH. If Nokogiri is on GAE, Nokogiri
|
13
|
-
# should skip loading xml jars. This is because those are in WEB-INF/lib and
|
14
|
-
# already set in the classpath.
|
15
|
-
unless $LOAD_PATH.to_s.include?("appengine-rack")
|
16
|
-
require 'stringio'
|
17
|
-
require 'isorelax.jar'
|
18
|
-
require 'jing.jar'
|
19
|
-
require 'nekohtml.jar'
|
20
|
-
require 'nekodtd.jar'
|
21
|
-
require 'xercesImpl.jar'
|
22
|
-
require 'serializer.jar'
|
23
|
-
require 'xalan.jar'
|
24
|
-
require 'xml-apis.jar'
|
25
|
-
end
|
5
|
+
require_relative "nokogiri/jruby/dependencies"
|
26
6
|
end
|
27
7
|
|
28
|
-
|
29
|
-
RUBY_VERSION =~ /(\d+\.\d+)/
|
30
|
-
require "nokogiri/#{$1}/nokogiri"
|
31
|
-
rescue LoadError
|
32
|
-
require 'nokogiri/nokogiri'
|
33
|
-
end
|
34
|
-
require 'nokogiri/version'
|
35
|
-
require 'nokogiri/syntax_error'
|
36
|
-
require 'nokogiri/xml'
|
37
|
-
require 'nokogiri/xslt'
|
38
|
-
require 'nokogiri/html'
|
39
|
-
require 'nokogiri/decorators/slop'
|
40
|
-
require 'nokogiri/css'
|
41
|
-
require 'nokogiri/html/builder'
|
8
|
+
require_relative "nokogiri/extension"
|
42
9
|
|
43
10
|
# Nokogiri parses and searches XML/HTML very quickly, and also has
|
44
11
|
# correctly implemented CSS3 selector support as well as XPath 1.0
|
45
12
|
# support.
|
46
13
|
#
|
47
14
|
# Parsing a document returns either a Nokogiri::XML::Document, or a
|
48
|
-
# Nokogiri::
|
15
|
+
# Nokogiri::HTML4::Document depending on the kind of document you parse.
|
49
16
|
#
|
50
17
|
# Here is an example:
|
51
18
|
#
|
52
|
-
#
|
53
|
-
#
|
19
|
+
# require 'nokogiri'
|
20
|
+
# require 'open-uri'
|
21
|
+
#
|
22
|
+
# # Get a Nokogiri::HTML4::Document for the page we’re interested in...
|
54
23
|
#
|
55
|
-
#
|
24
|
+
# doc = Nokogiri::HTML4(URI.open('http://www.google.com/search?q=tenderlove'))
|
56
25
|
#
|
57
|
-
#
|
26
|
+
# # Do funky things with it using Nokogiri::XML::Node methods...
|
58
27
|
#
|
59
|
-
#
|
28
|
+
# ####
|
29
|
+
# # Search for nodes by css
|
30
|
+
# doc.css('h3.r a.l').each do |link|
|
31
|
+
# puts link.content
|
32
|
+
# end
|
60
33
|
#
|
61
|
-
#
|
62
|
-
# # Search for nodes by css
|
63
|
-
# doc.css('h3.r a.l').each do |link|
|
64
|
-
# puts link.content
|
65
|
-
# end
|
34
|
+
# See also:
|
66
35
|
#
|
67
|
-
#
|
68
|
-
#
|
36
|
+
# - Nokogiri::XML::Searchable#css for more information about CSS searching
|
37
|
+
# - Nokogiri::XML::Searchable#xpath for more information about XPath searching
|
69
38
|
module Nokogiri
|
70
39
|
class << self
|
71
40
|
###
|
72
41
|
# Parse an HTML or XML document. +string+ contains the document.
|
73
|
-
def parse
|
42
|
+
def parse(string, url = nil, encoding = nil, options = nil)
|
74
43
|
if string.respond_to?(:read) ||
|
75
|
-
/^\s*<(?:!DOCTYPE\s+)?html[\s>]/i
|
44
|
+
/^\s*<(?:!DOCTYPE\s+)?html[\s>]/i.match?(string[0, 512])
|
76
45
|
# Expect an HTML indicator to appear within the first 512
|
77
46
|
# characters of a document. (<?xml ?> + <?xml-stylesheet ?>
|
78
47
|
# shouldn't be that long)
|
79
|
-
Nokogiri.
|
48
|
+
Nokogiri.HTML4(string, url, encoding,
|
80
49
|
options || XML::ParseOptions::DEFAULT_HTML)
|
81
50
|
else
|
82
51
|
Nokogiri.XML(string, url, encoding,
|
83
52
|
options || XML::ParseOptions::DEFAULT_XML)
|
84
|
-
end.tap
|
53
|
+
end.tap do |doc|
|
85
54
|
yield doc if block_given?
|
86
|
-
|
55
|
+
end
|
87
56
|
end
|
88
57
|
|
89
58
|
###
|
90
59
|
# Create a new Nokogiri::XML::DocumentFragment
|
91
|
-
def make
|
60
|
+
def make(input = nil, opts = {}, &blk)
|
92
61
|
if input
|
93
|
-
Nokogiri::
|
62
|
+
Nokogiri::HTML4.fragment(input).children.first
|
94
63
|
else
|
95
64
|
Nokogiri(&blk)
|
96
65
|
end
|
@@ -115,30 +84,37 @@ module Nokogiri
|
|
115
84
|
Nokogiri(*args, &block).slop!
|
116
85
|
end
|
117
86
|
|
87
|
+
# :nodoc:
|
118
88
|
def install_default_aliases
|
119
|
-
|
120
|
-
|
121
|
-
{
|
122
|
-
'Windows-31J' => 'CP932', # Windows-31J is the IANA registered name of CP932.
|
123
|
-
}.each { |alias_name, name|
|
124
|
-
EncodingHandler.alias(name, alias_name) if EncodingHandler[alias_name].nil?
|
125
|
-
}
|
89
|
+
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.")
|
90
|
+
Nokogiri::EncodingHandler.install_default_aliases
|
126
91
|
end
|
127
92
|
end
|
128
|
-
|
129
|
-
Nokogiri.install_default_aliases
|
130
93
|
end
|
131
94
|
|
132
95
|
###
|
133
|
-
#
|
134
|
-
#
|
135
|
-
# Nokogiri.parse
|
96
|
+
# Parse a document contained in +args+. Nokogiri will try to guess what type of document you are
|
97
|
+
# attempting to parse. For more information, see Nokogiri.parse
|
136
98
|
#
|
137
|
-
# To specify the type of document, use Nokogiri.XML or Nokogiri.
|
99
|
+
# To specify the type of document, use {Nokogiri.XML}, {Nokogiri.HTML4}, or {Nokogiri.HTML5}.
|
138
100
|
def Nokogiri(*args, &block)
|
139
|
-
if
|
140
|
-
Nokogiri::
|
101
|
+
if block
|
102
|
+
Nokogiri::HTML4::Builder.new(&block).doc.root
|
141
103
|
else
|
142
104
|
Nokogiri.parse(*args)
|
143
105
|
end
|
144
106
|
end
|
107
|
+
|
108
|
+
require_relative "nokogiri/version"
|
109
|
+
require_relative "nokogiri/class_resolver"
|
110
|
+
require_relative "nokogiri/syntax_error"
|
111
|
+
require_relative "nokogiri/xml"
|
112
|
+
require_relative "nokogiri/xslt"
|
113
|
+
require_relative "nokogiri/html4"
|
114
|
+
require_relative "nokogiri/html"
|
115
|
+
require_relative "nokogiri/decorators/slop"
|
116
|
+
require_relative "nokogiri/css"
|
117
|
+
require_relative "nokogiri/html4/builder"
|
118
|
+
require_relative "nokogiri/encoding_handler"
|
119
|
+
|
120
|
+
require_relative "nokogiri/html5" if Nokogiri.uses_gumbo?
|
@@ -1,7 +1,9 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require "nokogiri"
|
4
|
+
|
5
|
+
module XSD
|
6
|
+
module XMLParser
|
5
7
|
###
|
6
8
|
# Nokogiri XML parser for soap4r.
|
7
9
|
#
|
@@ -26,40 +28,40 @@ module XSD # :nodoc:
|
|
26
28
|
class Nokogiri < XSD::XMLParser::Parser
|
27
29
|
###
|
28
30
|
# Create a new XSD parser with +host+ and +opt+
|
29
|
-
def initialize
|
31
|
+
def initialize(host, opt = {})
|
30
32
|
super
|
31
|
-
@parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset ||
|
33
|
+
@parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || "UTF-8")
|
32
34
|
end
|
33
35
|
|
34
36
|
###
|
35
37
|
# Start parsing +string_or_readable+
|
36
|
-
def do_parse
|
38
|
+
def do_parse(string_or_readable)
|
37
39
|
@parser.parse(string_or_readable)
|
38
40
|
end
|
39
41
|
|
40
42
|
###
|
41
43
|
# Handle the start_element event with +name+ and +attrs+
|
42
|
-
def start_element
|
44
|
+
def start_element(name, attrs = [])
|
43
45
|
super(name, Hash[*attrs.flatten])
|
44
46
|
end
|
45
47
|
|
46
48
|
###
|
47
49
|
# Handle the end_element event with +name+
|
48
|
-
def end_element
|
50
|
+
def end_element(name)
|
49
51
|
super
|
50
52
|
end
|
51
53
|
|
52
54
|
###
|
53
55
|
# Handle errors with message +msg+
|
54
|
-
def error
|
55
|
-
raise ParseError
|
56
|
+
def error(msg)
|
57
|
+
raise ParseError, msg
|
56
58
|
end
|
57
|
-
|
59
|
+
alias_method :warning, :error
|
58
60
|
|
59
61
|
###
|
60
62
|
# Handle cdata_blocks containing +string+
|
61
|
-
def cdata_block
|
62
|
-
characters
|
63
|
+
def cdata_block(string)
|
64
|
+
characters(string)
|
63
65
|
end
|
64
66
|
|
65
67
|
###
|
@@ -69,16 +71,16 @@ module XSD # :nodoc:
|
|
69
71
|
# +prefix+ is the namespace prefix for the element
|
70
72
|
# +uri+ is the associated namespace URI
|
71
73
|
# +ns+ is a hash of namespace prefix:urls associated with the element
|
72
|
-
def start_element_namespace
|
74
|
+
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = [])
|
73
75
|
###
|
74
76
|
# Deal with SAX v1 interface
|
75
|
-
name = [prefix, name].compact.join(
|
76
|
-
attributes = ns.map
|
77
|
-
[[
|
78
|
-
|
79
|
-
[[attr.prefix, attr.localname].compact.join(
|
80
|
-
|
81
|
-
start_element
|
77
|
+
name = [prefix, name].compact.join(":")
|
78
|
+
attributes = ns.map do |ns_prefix, ns_uri|
|
79
|
+
[["xmlns", ns_prefix].compact.join(":"), ns_uri]
|
80
|
+
end + attrs.map do |attr|
|
81
|
+
[[attr.prefix, attr.localname].compact.join(":"), attr.value]
|
82
|
+
end.flatten
|
83
|
+
start_element(name, attributes)
|
82
84
|
end
|
83
85
|
|
84
86
|
###
|
@@ -86,14 +88,16 @@ module XSD # :nodoc:
|
|
86
88
|
# +name+ is the element's name
|
87
89
|
# +prefix+ is the namespace prefix associated with the element
|
88
90
|
# +uri+ is the associated namespace URI
|
89
|
-
def end_element_namespace
|
91
|
+
def end_element_namespace(name, prefix = nil, uri = nil)
|
90
92
|
###
|
91
93
|
# Deal with SAX v1 interface
|
92
|
-
end_element
|
94
|
+
end_element([prefix, name].compact.join(":"))
|
93
95
|
end
|
94
96
|
|
95
|
-
|
96
|
-
class_eval
|
97
|
+
["xmldecl", "start_document", "end_document", "comment"].each do |name|
|
98
|
+
class_eval <<~RUBY, __FILE__, __LINE__ + 1
|
99
|
+
def #{name}(*args); end
|
100
|
+
RUBY
|
97
101
|
end
|
98
102
|
|
99
103
|
add_factory(self)
|