nokogiri 1.12.5 → 1.13.1
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 +5 -0
- data/README.md +9 -7
- data/bin/nokogiri +63 -50
- data/dependencies.yml +5 -6
- data/ext/nokogiri/extconf.rb +47 -35
- data/ext/nokogiri/xml_document.c +35 -35
- data/ext/nokogiri/xml_document_fragment.c +0 -2
- data/ext/nokogiri/xml_dtd.c +2 -2
- data/ext/nokogiri/xml_encoding_handler.c +25 -11
- data/ext/nokogiri/xml_node.c +638 -333
- data/ext/nokogiri/xml_reader.c +37 -11
- data/ext/nokogiri/xml_xpath_context.c +72 -49
- data/ext/nokogiri/xslt_stylesheet.c +107 -9
- data/gumbo-parser/src/parser.c +0 -11
- data/lib/nokogiri/class_resolver.rb +67 -0
- data/lib/nokogiri/css/node.rb +9 -8
- data/lib/nokogiri/css/parser.rb +360 -341
- data/lib/nokogiri/css/parser.y +249 -244
- data/lib/nokogiri/css/parser_extras.rb +20 -20
- data/lib/nokogiri/css/syntax_error.rb +1 -0
- data/lib/nokogiri/css/tokenizer.rb +4 -3
- data/lib/nokogiri/css/tokenizer.rex +3 -2
- data/lib/nokogiri/css/xpath_visitor.rb +179 -82
- data/lib/nokogiri/css.rb +38 -6
- data/lib/nokogiri/decorators/slop.rb +8 -7
- data/lib/nokogiri/extension.rb +1 -1
- data/lib/nokogiri/gumbo.rb +1 -0
- data/lib/nokogiri/html.rb +16 -10
- data/lib/nokogiri/html4/builder.rb +1 -0
- data/lib/nokogiri/html4/document.rb +84 -75
- data/lib/nokogiri/html4/document_fragment.rb +11 -7
- data/lib/nokogiri/html4/element_description.rb +1 -0
- data/lib/nokogiri/html4/element_description_defaults.rb +426 -520
- data/lib/nokogiri/html4/entity_lookup.rb +2 -1
- data/lib/nokogiri/html4/sax/parser.rb +2 -1
- data/lib/nokogiri/html4/sax/parser_context.rb +1 -0
- data/lib/nokogiri/html4/sax/push_parser.rb +7 -7
- data/lib/nokogiri/html4.rb +11 -5
- data/lib/nokogiri/html5/document.rb +24 -10
- data/lib/nokogiri/html5/document_fragment.rb +5 -2
- data/lib/nokogiri/html5/node.rb +6 -3
- data/lib/nokogiri/html5.rb +68 -64
- data/lib/nokogiri/jruby/dependencies.rb +10 -9
- data/lib/nokogiri/syntax_error.rb +1 -0
- data/lib/nokogiri/version/constant.rb +2 -1
- data/lib/nokogiri/version/info.rb +19 -13
- data/lib/nokogiri/version.rb +1 -0
- data/lib/nokogiri/xml/attr.rb +5 -3
- data/lib/nokogiri/xml/attribute_decl.rb +2 -1
- data/lib/nokogiri/xml/builder.rb +32 -32
- data/lib/nokogiri/xml/cdata.rb +2 -1
- data/lib/nokogiri/xml/character_data.rb +1 -0
- data/lib/nokogiri/xml/document.rb +139 -103
- data/lib/nokogiri/xml/document_fragment.rb +41 -38
- data/lib/nokogiri/xml/dtd.rb +3 -2
- data/lib/nokogiri/xml/element_content.rb +1 -0
- data/lib/nokogiri/xml/element_decl.rb +2 -1
- data/lib/nokogiri/xml/entity_decl.rb +3 -2
- data/lib/nokogiri/xml/entity_reference.rb +1 -0
- data/lib/nokogiri/xml/namespace.rb +2 -0
- data/lib/nokogiri/xml/node/save_options.rb +6 -3
- data/lib/nokogiri/xml/node.rb +512 -348
- data/lib/nokogiri/xml/node_set.rb +46 -54
- data/lib/nokogiri/xml/notation.rb +12 -0
- data/lib/nokogiri/xml/parse_options.rb +11 -7
- data/lib/nokogiri/xml/pp/character_data.rb +8 -6
- data/lib/nokogiri/xml/pp/node.rb +24 -26
- data/lib/nokogiri/xml/pp.rb +1 -0
- data/lib/nokogiri/xml/processing_instruction.rb +2 -1
- data/lib/nokogiri/xml/reader.rb +17 -19
- data/lib/nokogiri/xml/relax_ng.rb +1 -0
- data/lib/nokogiri/xml/sax/document.rb +20 -19
- data/lib/nokogiri/xml/sax/parser.rb +36 -34
- data/lib/nokogiri/xml/sax/parser_context.rb +7 -3
- data/lib/nokogiri/xml/sax/push_parser.rb +5 -5
- data/lib/nokogiri/xml/sax.rb +1 -0
- data/lib/nokogiri/xml/schema.rb +7 -6
- data/lib/nokogiri/xml/searchable.rb +93 -62
- data/lib/nokogiri/xml/syntax_error.rb +4 -4
- data/lib/nokogiri/xml/text.rb +1 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +2 -1
- data/lib/nokogiri/xml/xpath.rb +12 -0
- data/lib/nokogiri/xml/xpath_context.rb +2 -3
- data/lib/nokogiri/xml.rb +3 -3
- data/lib/nokogiri/xslt/stylesheet.rb +1 -0
- data/lib/nokogiri/xslt.rb +21 -13
- data/lib/nokogiri.rb +19 -16
- data/lib/xsd/xmlparser/nokogiri.rb +25 -24
- data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
- data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
- metadata +101 -27
data/lib/nokogiri/xslt.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
# frozen_string_literal: true
|
3
|
+
|
2
4
|
module Nokogiri
|
3
5
|
class << self
|
4
6
|
###
|
@@ -8,7 +10,7 @@ module Nokogiri
|
|
8
10
|
#
|
9
11
|
# xslt = Nokogiri::XSLT(File.read(ARGV[0]))
|
10
12
|
#
|
11
|
-
def XSLT
|
13
|
+
def XSLT(stylesheet, modules = {})
|
12
14
|
XSLT.parse(stylesheet, modules)
|
13
15
|
end
|
14
16
|
end
|
@@ -33,22 +35,28 @@ module Nokogiri
|
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
36
|
-
|
37
|
-
#
|
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
|
+
#
|
38
49
|
def quote_params(params)
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
"concat('#{v.gsub(/'/, %q{', "'", '})}')"
|
44
|
-
else
|
45
|
-
"'#{v}'"
|
46
|
-
end
|
50
|
+
params.flatten.each_slice(2).each_with_object([]) do |kv, quoted_params|
|
51
|
+
key, value = kv.map(&:to_s)
|
52
|
+
value = if /'/.match?(value)
|
53
|
+
"concat('#{value.gsub(/'/, %q{', "'", '})}')"
|
47
54
|
else
|
48
|
-
|
55
|
+
"'#{value}'"
|
49
56
|
end
|
57
|
+
quoted_params << key
|
58
|
+
quoted_params << value
|
50
59
|
end
|
51
|
-
parray.flatten
|
52
60
|
end
|
53
61
|
end
|
54
62
|
end
|
data/lib/nokogiri.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
# Modify the PATH on windows so that the external DLLs will get loaded.
|
4
3
|
|
5
4
|
require "rbconfig"
|
6
5
|
|
@@ -19,30 +18,32 @@ require_relative "nokogiri/extension"
|
|
19
18
|
#
|
20
19
|
# Here is an example:
|
21
20
|
#
|
22
|
-
#
|
23
|
-
#
|
21
|
+
# require 'nokogiri'
|
22
|
+
# require 'open-uri'
|
24
23
|
#
|
25
|
-
#
|
24
|
+
# # Get a Nokogiri::HTML4::Document for the page we’re interested in...
|
26
25
|
#
|
27
|
-
#
|
26
|
+
# doc = Nokogiri::HTML4(URI.open('http://www.google.com/search?q=tenderlove'))
|
28
27
|
#
|
29
|
-
#
|
28
|
+
# # Do funky things with it using Nokogiri::XML::Node methods...
|
30
29
|
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
30
|
+
# ####
|
31
|
+
# # Search for nodes by css
|
32
|
+
# doc.css('h3.r a.l').each do |link|
|
33
|
+
# puts link.content
|
34
|
+
# end
|
36
35
|
#
|
37
|
-
# See
|
38
|
-
#
|
36
|
+
# See also:
|
37
|
+
#
|
38
|
+
# - Nokogiri::XML::Searchable#css for more information about CSS searching
|
39
|
+
# - Nokogiri::XML::Searchable#xpath for more information about XPath searching
|
39
40
|
module Nokogiri
|
40
41
|
class << self
|
41
42
|
###
|
42
43
|
# Parse an HTML or XML document. +string+ contains the document.
|
43
44
|
def parse(string, url = nil, encoding = nil, options = nil)
|
44
45
|
if string.respond_to?(:read) ||
|
45
|
-
/^\s*<(?:!DOCTYPE\s+)?html[\s>]/i
|
46
|
+
/^\s*<(?:!DOCTYPE\s+)?html[\s>]/i.match?(string[0, 512])
|
46
47
|
# Expect an HTML indicator to appear within the first 512
|
47
48
|
# characters of a document. (<?xml ?> + <?xml-stylesheet ?>
|
48
49
|
# shouldn't be that long)
|
@@ -85,6 +86,7 @@ module Nokogiri
|
|
85
86
|
Nokogiri(*args, &block).slop!
|
86
87
|
end
|
87
88
|
|
89
|
+
# :nodoc:
|
88
90
|
def install_default_aliases
|
89
91
|
# Make sure to support some popular encoding aliases not known by
|
90
92
|
# all iconv implementations.
|
@@ -105,7 +107,7 @@ end
|
|
105
107
|
#
|
106
108
|
# To specify the type of document, use {Nokogiri.XML}, {Nokogiri.HTML4}, or {Nokogiri.HTML5}.
|
107
109
|
def Nokogiri(*args, &block)
|
108
|
-
if
|
110
|
+
if block
|
109
111
|
Nokogiri::HTML4::Builder.new(&block).doc.root
|
110
112
|
else
|
111
113
|
Nokogiri.parse(*args)
|
@@ -113,6 +115,7 @@ def Nokogiri(*args, &block)
|
|
113
115
|
end
|
114
116
|
|
115
117
|
require_relative "nokogiri/version"
|
118
|
+
require_relative "nokogiri/class_resolver"
|
116
119
|
require_relative "nokogiri/syntax_error"
|
117
120
|
require_relative "nokogiri/xml"
|
118
121
|
require_relative "nokogiri/xslt"
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'nokogiri'
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
require "nokogiri"
|
4
|
+
|
5
|
+
module XSD
|
6
|
+
module XMLParser
|
6
7
|
###
|
7
8
|
# Nokogiri XML parser for soap4r.
|
8
9
|
#
|
@@ -27,40 +28,40 @@ module XSD # :nodoc:
|
|
27
28
|
class Nokogiri < XSD::XMLParser::Parser
|
28
29
|
###
|
29
30
|
# Create a new XSD parser with +host+ and +opt+
|
30
|
-
def initialize
|
31
|
+
def initialize(host, opt = {})
|
31
32
|
super
|
32
|
-
@parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset ||
|
33
|
+
@parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || "UTF-8")
|
33
34
|
end
|
34
35
|
|
35
36
|
###
|
36
37
|
# Start parsing +string_or_readable+
|
37
|
-
def do_parse
|
38
|
+
def do_parse(string_or_readable)
|
38
39
|
@parser.parse(string_or_readable)
|
39
40
|
end
|
40
41
|
|
41
42
|
###
|
42
43
|
# Handle the start_element event with +name+ and +attrs+
|
43
|
-
def start_element
|
44
|
+
def start_element(name, attrs = [])
|
44
45
|
super(name, Hash[*attrs.flatten])
|
45
46
|
end
|
46
47
|
|
47
48
|
###
|
48
49
|
# Handle the end_element event with +name+
|
49
|
-
def end_element
|
50
|
+
def end_element(name)
|
50
51
|
super
|
51
52
|
end
|
52
53
|
|
53
54
|
###
|
54
55
|
# Handle errors with message +msg+
|
55
|
-
def error
|
56
|
-
raise ParseError
|
56
|
+
def error(msg)
|
57
|
+
raise ParseError, msg
|
57
58
|
end
|
58
|
-
|
59
|
+
alias_method :warning, :error
|
59
60
|
|
60
61
|
###
|
61
62
|
# Handle cdata_blocks containing +string+
|
62
|
-
def cdata_block
|
63
|
-
characters
|
63
|
+
def cdata_block(string)
|
64
|
+
characters(string)
|
64
65
|
end
|
65
66
|
|
66
67
|
###
|
@@ -70,16 +71,16 @@ module XSD # :nodoc:
|
|
70
71
|
# +prefix+ is the namespace prefix for the element
|
71
72
|
# +uri+ is the associated namespace URI
|
72
73
|
# +ns+ is a hash of namespace prefix:urls associated with the element
|
73
|
-
def start_element_namespace
|
74
|
+
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = [])
|
74
75
|
###
|
75
76
|
# Deal with SAX v1 interface
|
76
|
-
name = [prefix, name].compact.join(
|
77
|
-
attributes = ns.map
|
78
|
-
[[
|
79
|
-
|
80
|
-
[[attr.prefix, attr.localname].compact.join(
|
81
|
-
|
82
|
-
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)
|
83
84
|
end
|
84
85
|
|
85
86
|
###
|
@@ -87,13 +88,13 @@ module XSD # :nodoc:
|
|
87
88
|
# +name+ is the element's name
|
88
89
|
# +prefix+ is the namespace prefix associated with the element
|
89
90
|
# +uri+ is the associated namespace URI
|
90
|
-
def end_element_namespace
|
91
|
+
def end_element_namespace(name, prefix = nil, uri = nil)
|
91
92
|
###
|
92
93
|
# Deal with SAX v1 interface
|
93
|
-
end_element
|
94
|
+
end_element([prefix, name].compact.join(":"))
|
94
95
|
end
|
95
96
|
|
96
|
-
|
97
|
+
["xmldecl", "start_document", "end_document", "comment"].each do |name|
|
97
98
|
class_eval %{ def #{name}(*args); end }
|
98
99
|
end
|
99
100
|
|
@@ -0,0 +1,61 @@
|
|
1
|
+
From 3ea8d08da310b645e37940eaae5cc28e251b155b Mon Sep 17 00:00:00 2001
|
2
|
+
From: Mike Dalessio <mike.dalessio@gmail.com>
|
3
|
+
Date: Sat, 17 Jul 2021 14:36:53 -0400
|
4
|
+
Subject: [PATCH] htmlParseComment: handle abruptly-closed comments
|
5
|
+
|
6
|
+
See guidance provided on abrutply-closed comments here:
|
7
|
+
|
8
|
+
https://html.spec.whatwg.org/multipage/parsing.html#parse-error-abrupt-closing-of-empty-comment
|
9
|
+
---
|
10
|
+
HTMLparser.c | 11 +++++++++++
|
11
|
+
include/libxml/xmlerror.h | 1 +
|
12
|
+
2 files changed, 12 insertions(+)
|
13
|
+
|
14
|
+
diff --git a/HTMLparser.c b/HTMLparser.c
|
15
|
+
index b56363a..f0bf294 100644
|
16
|
+
--- a/HTMLparser.c
|
17
|
+
+++ b/HTMLparser.c
|
18
|
+
@@ -3485,10 +3485,20 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
19
|
+
q = CUR_CHAR(ql);
|
20
|
+
if (q == 0)
|
21
|
+
goto unfinished;
|
22
|
+
+ if (q == '>') {
|
23
|
+
+ htmlParseErr(ctxt, XML_ERR_COMMENT_ABRUPTLY_ENDED, "Comment abruptly ended", NULL, NULL);
|
24
|
+
+ cur = '>';
|
25
|
+
+ goto finished;
|
26
|
+
+ }
|
27
|
+
NEXTL(ql);
|
28
|
+
r = CUR_CHAR(rl);
|
29
|
+
if (r == 0)
|
30
|
+
goto unfinished;
|
31
|
+
+ if (q == '-' && r == '>') {
|
32
|
+
+ htmlParseErr(ctxt, XML_ERR_COMMENT_ABRUPTLY_ENDED, "Comment abruptly ended", NULL, NULL);
|
33
|
+
+ cur = '>';
|
34
|
+
+ goto finished;
|
35
|
+
+ }
|
36
|
+
NEXTL(rl);
|
37
|
+
cur = CUR_CHAR(l);
|
38
|
+
while ((cur != 0) &&
|
39
|
+
@@ -3536,6 +3546,7 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
40
|
+
cur = next;
|
41
|
+
l = nl;
|
42
|
+
}
|
43
|
+
+finished:
|
44
|
+
buf[len] = 0;
|
45
|
+
if (cur == '>') {
|
46
|
+
NEXT;
|
47
|
+
diff --git a/include/libxml/xmlerror.h b/include/libxml/xmlerror.h
|
48
|
+
index c101997..7b68e40 100644
|
49
|
+
--- a/include/libxml/xmlerror.h
|
50
|
+
+++ b/include/libxml/xmlerror.h
|
51
|
+
@@ -209,6 +209,7 @@ typedef enum {
|
52
|
+
XML_ERR_VERSION_MISMATCH, /* 109 */
|
53
|
+
XML_ERR_NAME_TOO_LONG, /* 110 */
|
54
|
+
XML_ERR_USER_STOP, /* 111 */
|
55
|
+
+ XML_ERR_COMMENT_ABRUPTLY_ENDED, /* 112 */
|
56
|
+
XML_NS_ERR_XML_NAMESPACE = 200,
|
57
|
+
XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */
|
58
|
+
XML_NS_ERR_QNAME, /* 202 */
|
59
|
+
--
|
60
|
+
2.31.0
|
61
|
+
|
@@ -0,0 +1,77 @@
|
|
1
|
+
From 74c95ec5932c737d4fcb06b8646b0017364ada14 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Mike Dalessio <mike.dalessio@gmail.com>
|
3
|
+
Date: Fri, 24 Dec 2021 19:08:01 -0500
|
4
|
+
Subject: [PATCH] attempt to hack in wildcard namespaces to xpath
|
5
|
+
|
6
|
+
I'm not confident this is a bulletproof patch.
|
7
|
+
---
|
8
|
+
xpath.c | 24 ++++++++++++++++++------
|
9
|
+
1 file changed, 18 insertions(+), 6 deletions(-)
|
10
|
+
|
11
|
+
diff --git a/xpath.c b/xpath.c
|
12
|
+
index 1aa2f1a..c7f0885 100644
|
13
|
+
--- a/xpath.c
|
14
|
+
+++ b/xpath.c
|
15
|
+
@@ -146,6 +146,9 @@
|
16
|
+
#define XPATH_MAX_RECURSION_DEPTH 5000
|
17
|
+
#endif
|
18
|
+
|
19
|
+
+#define WILDCARD_PREFIX "*"
|
20
|
+
+#define IS_WILDCARD_PREFIX(p) xmlStrEqual((xmlChar*)WILDCARD_PREFIX, p)
|
21
|
+
+
|
22
|
+
/*
|
23
|
+
* TODO:
|
24
|
+
* There are a few spots where some tests are done which depend upon ascii
|
25
|
+
@@ -11073,12 +11076,15 @@ xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test,
|
26
|
+
SKIP_BLANKS;
|
27
|
+
|
28
|
+
if ((name == NULL) && (CUR == '*')) {
|
29
|
+
- /*
|
30
|
+
- * All elements
|
31
|
+
- */
|
32
|
+
NEXT;
|
33
|
+
- *test = NODE_TEST_ALL;
|
34
|
+
- return(NULL);
|
35
|
+
+ if (CUR != ':') {
|
36
|
+
+ /*
|
37
|
+
+ * All elements
|
38
|
+
+ */
|
39
|
+
+ *test = NODE_TEST_ALL;
|
40
|
+
+ return(NULL);
|
41
|
+
+ }
|
42
|
+
+ name = xmlCharStrdup(WILDCARD_PREFIX);
|
43
|
+
}
|
44
|
+
|
45
|
+
if (name == NULL)
|
46
|
+
@@ -11327,6 +11333,10 @@ xmlXPathCompStep(xmlXPathParserContextPtr ctxt) {
|
47
|
+
}
|
48
|
+
#endif
|
49
|
+
if (CUR == '*') {
|
50
|
+
+ if (NXT(1) == ':') {
|
51
|
+
+ NEXT;
|
52
|
+
+ name = xmlCharStrdup(WILDCARD_PREFIX);
|
53
|
+
+ }
|
54
|
+
axis = AXIS_CHILD;
|
55
|
+
} else {
|
56
|
+
if (name == NULL)
|
57
|
+
@@ -12030,7 +12040,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
|
58
|
+
/*
|
59
|
+
* Setup namespaces.
|
60
|
+
*/
|
61
|
+
- if (prefix != NULL) {
|
62
|
+
+ if (prefix != NULL && !IS_WILDCARD_PREFIX(prefix)) {
|
63
|
+
URI = xmlXPathNsLookup(xpctxt, prefix);
|
64
|
+
if (URI == NULL) {
|
65
|
+
xmlXPathReleaseObject(xpctxt, obj);
|
66
|
+
@@ -12369,6 +12379,8 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
|
67
|
+
{
|
68
|
+
XP_TEST_HIT
|
69
|
+
}
|
70
|
+
+ } else if (IS_WILDCARD_PREFIX(prefix)) {
|
71
|
+
+ XP_TEST_HIT
|
72
|
+
} else {
|
73
|
+
if ((cur->ns != NULL) &&
|
74
|
+
(xmlStrEqual(URI, cur->ns->href)))
|
75
|
+
--
|
76
|
+
2.31.0
|
77
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nokogiri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Dalessio
|
@@ -20,36 +20,36 @@ authors:
|
|
20
20
|
autorequire:
|
21
21
|
bindir: bin
|
22
22
|
cert_chain: []
|
23
|
-
date:
|
23
|
+
date: 2022-01-13 00:00:00.000000000 Z
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: mini_portile2
|
27
27
|
requirement: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - "~>"
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version:
|
31
|
+
version: 2.7.0
|
32
32
|
type: :runtime
|
33
33
|
prerelease: false
|
34
34
|
version_requirements: !ruby/object:Gem::Requirement
|
35
35
|
requirements:
|
36
36
|
- - "~>"
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
38
|
+
version: 2.7.0
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
|
-
name:
|
40
|
+
name: racc
|
41
41
|
requirement: !ruby/object:Gem::Requirement
|
42
42
|
requirements:
|
43
43
|
- - "~>"
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: '1.4'
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
48
|
version_requirements: !ruby/object:Gem::Requirement
|
49
49
|
requirements:
|
50
50
|
- - "~>"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
52
|
+
version: '1.4'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: bundler
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,14 +84,14 @@ dependencies:
|
|
84
84
|
requirements:
|
85
85
|
- - "~>"
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: '5.
|
87
|
+
version: '5.15'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '5.
|
94
|
+
version: '5.15'
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: minitest-reporters
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,88 +122,158 @@ dependencies:
|
|
122
122
|
version: '13.0'
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
124
|
name: rake-compiler
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - '='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 1.1.7
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - '='
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: 1.1.7
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: rake-compiler-dock
|
125
139
|
requirement: !ruby/object:Gem::Requirement
|
126
140
|
requirements:
|
127
141
|
- - "~>"
|
128
142
|
- !ruby/object:Gem::Version
|
129
|
-
version: '1.
|
143
|
+
version: '1.2'
|
130
144
|
type: :development
|
131
145
|
prerelease: false
|
132
146
|
version_requirements: !ruby/object:Gem::Requirement
|
133
147
|
requirements:
|
134
148
|
- - "~>"
|
135
149
|
- !ruby/object:Gem::Version
|
136
|
-
version: '1.
|
150
|
+
version: '1.2'
|
137
151
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
152
|
+
name: rdoc
|
139
153
|
requirement: !ruby/object:Gem::Requirement
|
140
154
|
requirements:
|
141
155
|
- - "~>"
|
142
156
|
- !ruby/object:Gem::Version
|
143
|
-
version: '
|
157
|
+
version: '6.3'
|
144
158
|
type: :development
|
145
159
|
prerelease: false
|
146
160
|
version_requirements: !ruby/object:Gem::Requirement
|
147
161
|
requirements:
|
148
162
|
- - "~>"
|
149
163
|
- !ruby/object:Gem::Version
|
150
|
-
version: '
|
164
|
+
version: '6.3'
|
151
165
|
- !ruby/object:Gem::Dependency
|
152
166
|
name: rexical
|
153
167
|
requirement: !ruby/object:Gem::Requirement
|
154
168
|
requirements:
|
155
169
|
- - "~>"
|
156
170
|
- !ruby/object:Gem::Version
|
157
|
-
version: 1.0.
|
171
|
+
version: 1.0.7
|
158
172
|
type: :development
|
159
173
|
prerelease: false
|
160
174
|
version_requirements: !ruby/object:Gem::Requirement
|
161
175
|
requirements:
|
162
176
|
- - "~>"
|
163
177
|
- !ruby/object:Gem::Version
|
164
|
-
version: 1.0.
|
178
|
+
version: 1.0.7
|
165
179
|
- !ruby/object:Gem::Dependency
|
166
180
|
name: rubocop
|
167
181
|
requirement: !ruby/object:Gem::Requirement
|
168
182
|
requirements:
|
169
183
|
- - "~>"
|
170
184
|
- !ruby/object:Gem::Version
|
171
|
-
version: '1.
|
185
|
+
version: '1.23'
|
172
186
|
type: :development
|
173
187
|
prerelease: false
|
174
188
|
version_requirements: !ruby/object:Gem::Requirement
|
175
189
|
requirements:
|
176
190
|
- - "~>"
|
177
191
|
- !ruby/object:Gem::Version
|
178
|
-
version: '1.
|
192
|
+
version: '1.23'
|
179
193
|
- !ruby/object:Gem::Dependency
|
180
|
-
name:
|
194
|
+
name: rubocop-minitest
|
195
|
+
requirement: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - "~>"
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0.17'
|
200
|
+
type: :development
|
201
|
+
prerelease: false
|
202
|
+
version_requirements: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - "~>"
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0.17'
|
207
|
+
- !ruby/object:Gem::Dependency
|
208
|
+
name: rubocop-performance
|
181
209
|
requirement: !ruby/object:Gem::Requirement
|
182
210
|
requirements:
|
183
211
|
- - "~>"
|
184
212
|
- !ruby/object:Gem::Version
|
185
|
-
version: '
|
213
|
+
version: '1.12'
|
186
214
|
type: :development
|
187
215
|
prerelease: false
|
188
216
|
version_requirements: !ruby/object:Gem::Requirement
|
189
217
|
requirements:
|
190
218
|
- - "~>"
|
191
219
|
- !ruby/object:Gem::Version
|
192
|
-
version: '
|
220
|
+
version: '1.12'
|
193
221
|
- !ruby/object:Gem::Dependency
|
194
|
-
name:
|
222
|
+
name: rubocop-rake
|
223
|
+
requirement: !ruby/object:Gem::Requirement
|
224
|
+
requirements:
|
225
|
+
- - "~>"
|
226
|
+
- !ruby/object:Gem::Version
|
227
|
+
version: '0.6'
|
228
|
+
type: :development
|
229
|
+
prerelease: false
|
230
|
+
version_requirements: !ruby/object:Gem::Requirement
|
231
|
+
requirements:
|
232
|
+
- - "~>"
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '0.6'
|
235
|
+
- !ruby/object:Gem::Dependency
|
236
|
+
name: rubocop-shopify
|
237
|
+
requirement: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - "~>"
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '2.3'
|
242
|
+
type: :development
|
243
|
+
prerelease: false
|
244
|
+
version_requirements: !ruby/object:Gem::Requirement
|
245
|
+
requirements:
|
246
|
+
- - "~>"
|
247
|
+
- !ruby/object:Gem::Version
|
248
|
+
version: '2.3'
|
249
|
+
- !ruby/object:Gem::Dependency
|
250
|
+
name: ruby_memcheck
|
251
|
+
requirement: !ruby/object:Gem::Requirement
|
252
|
+
requirements:
|
253
|
+
- - "~>"
|
254
|
+
- !ruby/object:Gem::Version
|
255
|
+
version: '1.0'
|
256
|
+
type: :development
|
257
|
+
prerelease: false
|
258
|
+
version_requirements: !ruby/object:Gem::Requirement
|
259
|
+
requirements:
|
260
|
+
- - "~>"
|
261
|
+
- !ruby/object:Gem::Version
|
262
|
+
version: '1.0'
|
263
|
+
- !ruby/object:Gem::Dependency
|
264
|
+
name: simplecov
|
195
265
|
requirement: !ruby/object:Gem::Requirement
|
196
266
|
requirements:
|
197
267
|
- - "~>"
|
198
268
|
- !ruby/object:Gem::Version
|
199
|
-
version: '0.
|
269
|
+
version: '0.21'
|
200
270
|
type: :development
|
201
271
|
prerelease: false
|
202
272
|
version_requirements: !ruby/object:Gem::Requirement
|
203
273
|
requirements:
|
204
274
|
- - "~>"
|
205
275
|
- !ruby/object:Gem::Version
|
206
|
-
version: '0.
|
276
|
+
version: '0.21'
|
207
277
|
description: |
|
208
278
|
Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby. It provides a
|
209
279
|
sensible, easy-to-understand API for reading, writing, modifying, and querying documents. It is
|
@@ -341,6 +411,7 @@ files:
|
|
341
411
|
- gumbo-parser/src/vector.c
|
342
412
|
- gumbo-parser/src/vector.h
|
343
413
|
- lib/nokogiri.rb
|
414
|
+
- lib/nokogiri/class_resolver.rb
|
344
415
|
- lib/nokogiri/css.rb
|
345
416
|
- lib/nokogiri/css/node.rb
|
346
417
|
- lib/nokogiri/css/parser.rb
|
@@ -420,6 +491,8 @@ files:
|
|
420
491
|
- patches/libxml2/0005-avoid-isnan-isinf.patch
|
421
492
|
- patches/libxml2/0006-update-automake-files-for-arm64.patch
|
422
493
|
- patches/libxml2/0007-Fix-XPath-recursion-limit.patch
|
494
|
+
- patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch
|
495
|
+
- patches/libxml2/0009-allow-wildcard-namespaces.patch
|
423
496
|
- patches/libxslt/0001-update-automake-files-for-arm64.patch
|
424
497
|
- patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch
|
425
498
|
- ports/archives/libxml2-2.9.12.tar.gz
|
@@ -433,6 +506,7 @@ metadata:
|
|
433
506
|
documentation_uri: https://nokogiri.org/rdoc/index.html
|
434
507
|
changelog_uri: https://nokogiri.org/CHANGELOG.html
|
435
508
|
source_code_uri: https://github.com/sparklemotion/nokogiri
|
509
|
+
rubygems_mfa_required: 'true'
|
436
510
|
post_install_message:
|
437
511
|
rdoc_options:
|
438
512
|
- "--main"
|
@@ -443,14 +517,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
443
517
|
requirements:
|
444
518
|
- - ">="
|
445
519
|
- !ruby/object:Gem::Version
|
446
|
-
version: 2.
|
520
|
+
version: 2.6.0
|
447
521
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
448
522
|
requirements:
|
449
523
|
- - ">="
|
450
524
|
- !ruby/object:Gem::Version
|
451
525
|
version: '0'
|
452
526
|
requirements: []
|
453
|
-
rubygems_version: 3.
|
527
|
+
rubygems_version: 3.3.3
|
454
528
|
signing_key:
|
455
529
|
specification_version: 4
|
456
530
|
summary: Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby.
|