nokogiri 1.12.3 → 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.

Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -0
  3. data/README.md +9 -7
  4. data/bin/nokogiri +63 -50
  5. data/dependencies.yml +5 -6
  6. data/ext/nokogiri/extconf.rb +47 -35
  7. data/ext/nokogiri/xml_document.c +35 -35
  8. data/ext/nokogiri/xml_document_fragment.c +0 -2
  9. data/ext/nokogiri/xml_dtd.c +2 -2
  10. data/ext/nokogiri/xml_encoding_handler.c +25 -11
  11. data/ext/nokogiri/xml_node.c +645 -333
  12. data/ext/nokogiri/xml_reader.c +37 -11
  13. data/ext/nokogiri/xml_xpath_context.c +72 -49
  14. data/ext/nokogiri/xslt_stylesheet.c +107 -9
  15. data/gumbo-parser/src/parser.c +0 -11
  16. data/lib/nokogiri/class_resolver.rb +67 -0
  17. data/lib/nokogiri/css/node.rb +9 -8
  18. data/lib/nokogiri/css/parser.rb +360 -341
  19. data/lib/nokogiri/css/parser.y +249 -244
  20. data/lib/nokogiri/css/parser_extras.rb +20 -20
  21. data/lib/nokogiri/css/syntax_error.rb +1 -0
  22. data/lib/nokogiri/css/tokenizer.rb +4 -3
  23. data/lib/nokogiri/css/tokenizer.rex +3 -2
  24. data/lib/nokogiri/css/xpath_visitor.rb +179 -82
  25. data/lib/nokogiri/css.rb +38 -6
  26. data/lib/nokogiri/decorators/slop.rb +8 -7
  27. data/lib/nokogiri/extension.rb +1 -1
  28. data/lib/nokogiri/gumbo.rb +1 -0
  29. data/lib/nokogiri/html.rb +16 -10
  30. data/lib/nokogiri/html4/builder.rb +1 -0
  31. data/lib/nokogiri/html4/document.rb +84 -75
  32. data/lib/nokogiri/html4/document_fragment.rb +11 -7
  33. data/lib/nokogiri/html4/element_description.rb +1 -0
  34. data/lib/nokogiri/html4/element_description_defaults.rb +426 -520
  35. data/lib/nokogiri/html4/entity_lookup.rb +2 -1
  36. data/lib/nokogiri/html4/sax/parser.rb +2 -1
  37. data/lib/nokogiri/html4/sax/parser_context.rb +1 -0
  38. data/lib/nokogiri/html4/sax/push_parser.rb +7 -7
  39. data/lib/nokogiri/html4.rb +11 -5
  40. data/lib/nokogiri/html5/document.rb +24 -10
  41. data/lib/nokogiri/html5/document_fragment.rb +5 -2
  42. data/lib/nokogiri/html5/node.rb +6 -3
  43. data/lib/nokogiri/html5.rb +68 -64
  44. data/lib/nokogiri/jruby/dependencies.rb +10 -9
  45. data/lib/nokogiri/syntax_error.rb +1 -0
  46. data/lib/nokogiri/version/constant.rb +2 -1
  47. data/lib/nokogiri/version/info.rb +19 -13
  48. data/lib/nokogiri/version.rb +1 -0
  49. data/lib/nokogiri/xml/attr.rb +5 -3
  50. data/lib/nokogiri/xml/attribute_decl.rb +2 -1
  51. data/lib/nokogiri/xml/builder.rb +69 -31
  52. data/lib/nokogiri/xml/cdata.rb +2 -1
  53. data/lib/nokogiri/xml/character_data.rb +1 -0
  54. data/lib/nokogiri/xml/document.rb +178 -96
  55. data/lib/nokogiri/xml/document_fragment.rb +41 -38
  56. data/lib/nokogiri/xml/dtd.rb +3 -2
  57. data/lib/nokogiri/xml/element_content.rb +1 -0
  58. data/lib/nokogiri/xml/element_decl.rb +2 -1
  59. data/lib/nokogiri/xml/entity_decl.rb +3 -2
  60. data/lib/nokogiri/xml/entity_reference.rb +1 -0
  61. data/lib/nokogiri/xml/namespace.rb +2 -0
  62. data/lib/nokogiri/xml/node/save_options.rb +7 -4
  63. data/lib/nokogiri/xml/node.rb +512 -348
  64. data/lib/nokogiri/xml/node_set.rb +46 -54
  65. data/lib/nokogiri/xml/notation.rb +12 -0
  66. data/lib/nokogiri/xml/parse_options.rb +11 -7
  67. data/lib/nokogiri/xml/pp/character_data.rb +8 -6
  68. data/lib/nokogiri/xml/pp/node.rb +24 -26
  69. data/lib/nokogiri/xml/pp.rb +1 -0
  70. data/lib/nokogiri/xml/processing_instruction.rb +2 -1
  71. data/lib/nokogiri/xml/reader.rb +17 -19
  72. data/lib/nokogiri/xml/relax_ng.rb +1 -0
  73. data/lib/nokogiri/xml/sax/document.rb +20 -19
  74. data/lib/nokogiri/xml/sax/parser.rb +36 -34
  75. data/lib/nokogiri/xml/sax/parser_context.rb +7 -3
  76. data/lib/nokogiri/xml/sax/push_parser.rb +5 -5
  77. data/lib/nokogiri/xml/sax.rb +1 -0
  78. data/lib/nokogiri/xml/schema.rb +7 -6
  79. data/lib/nokogiri/xml/searchable.rb +93 -62
  80. data/lib/nokogiri/xml/syntax_error.rb +4 -4
  81. data/lib/nokogiri/xml/text.rb +1 -0
  82. data/lib/nokogiri/xml/xpath/syntax_error.rb +2 -1
  83. data/lib/nokogiri/xml/xpath.rb +12 -0
  84. data/lib/nokogiri/xml/xpath_context.rb +2 -3
  85. data/lib/nokogiri/xml.rb +3 -3
  86. data/lib/nokogiri/xslt/stylesheet.rb +1 -0
  87. data/lib/nokogiri/xslt.rb +21 -13
  88. data/lib/nokogiri.rb +19 -16
  89. data/lib/xsd/xmlparser/nokogiri.rb +25 -24
  90. data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
  91. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  92. 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 stylesheet, modules = {}
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
- # Quote parameters in +params+ for stylesheet safety
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
- parray = (params.instance_of?(Hash) ? params.to_a.flatten : params).dup
40
- parray.each_with_index do |v, i|
41
- parray[i] = if i % 2 > 0
42
- if v =~ /'/
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
- v.to_s
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
- # -*- coding: utf-8 -*-
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
- # require 'nokogiri'
23
- # require 'open-uri'
21
+ # require 'nokogiri'
22
+ # require 'open-uri'
24
23
  #
25
- # # Get a Nokogiri::HTML4::Document for the page we’re interested in...
24
+ # # Get a Nokogiri::HTML4::Document for the page we’re interested in...
26
25
  #
27
- # doc = Nokogiri::HTML4(URI.open('http://www.google.com/search?q=tenderlove'))
26
+ # doc = Nokogiri::HTML4(URI.open('http://www.google.com/search?q=tenderlove'))
28
27
  #
29
- # # Do funky things with it using Nokogiri::XML::Node methods...
28
+ # # Do funky things with it using Nokogiri::XML::Node methods...
30
29
  #
31
- # ####
32
- # # Search for nodes by css
33
- # doc.css('h3.r a.l').each do |link|
34
- # puts link.content
35
- # end
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 Nokogiri::XML::Searchable#css for more information about CSS searching.
38
- # See Nokogiri::XML::Searchable#xpath for more information about XPath searching.
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 === string[0, 512]
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 block_given?
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
- module XSD # :nodoc:
5
- module XMLParser # :nodoc:
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 host, opt = {}
31
+ def initialize(host, opt = {})
31
32
  super
32
- @parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || 'UTF-8')
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 string_or_readable
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 name, attrs = []
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 name
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 msg
56
- raise ParseError.new(msg)
56
+ def error(msg)
57
+ raise ParseError, msg
57
58
  end
58
- alias :warning :error
59
+ alias_method :warning, :error
59
60
 
60
61
  ###
61
62
  # Handle cdata_blocks containing +string+
62
- def cdata_block string
63
- characters string
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 name, attrs = [], prefix = nil, uri = nil, ns = []
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 { |ns_prefix,ns_uri|
78
- [['xmlns', ns_prefix].compact.join(':'), ns_uri]
79
- } + attrs.map { |attr|
80
- [[attr.prefix, attr.localname].compact.join(':'), attr.value]
81
- }.flatten
82
- start_element name, attributes
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 name, prefix = nil, uri = nil
91
+ def end_element_namespace(name, prefix = nil, uri = nil)
91
92
  ###
92
93
  # Deal with SAX v1 interface
93
- end_element [prefix, name].compact.join(':')
94
+ end_element([prefix, name].compact.join(":"))
94
95
  end
95
96
 
96
- %w{ xmldecl start_document end_document comment }.each do |name|
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.12.3
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: 2021-08-10 00:00:00.000000000 Z
23
+ date: 2022-01-13 00:00:00.000000000 Z
24
24
  dependencies:
25
25
  - !ruby/object:Gem::Dependency
26
- name: racc
26
+ name: mini_portile2
27
27
  requirement: !ruby/object:Gem::Requirement
28
28
  requirements:
29
29
  - - "~>"
30
30
  - !ruby/object:Gem::Version
31
- version: '1.4'
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: '1.4'
38
+ version: 2.7.0
39
39
  - !ruby/object:Gem::Dependency
40
- name: mini_portile2
40
+ name: racc
41
41
  requirement: !ruby/object:Gem::Requirement
42
42
  requirements:
43
43
  - - "~>"
44
44
  - !ruby/object:Gem::Version
45
- version: 2.6.1
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: 2.6.1
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.8'
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.8'
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.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.1'
150
+ version: '1.2'
137
151
  - !ruby/object:Gem::Dependency
138
- name: rake-compiler-dock
152
+ name: rdoc
139
153
  requirement: !ruby/object:Gem::Requirement
140
154
  requirements:
141
155
  - - "~>"
142
156
  - !ruby/object:Gem::Version
143
- version: '1.1'
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: '1.1'
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.5
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.5
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.7'
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.7'
192
+ version: '1.23'
179
193
  - !ruby/object:Gem::Dependency
180
- name: simplecov
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: '0.20'
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: '0.20'
220
+ version: '1.12'
193
221
  - !ruby/object:Gem::Dependency
194
- name: yard
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.9'
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.9'
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.5.0
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.2.15
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.