nokogiri 1.10.8 → 1.11.0.rc3

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -22
  3. data/ext/nokogiri/extconf.rb +50 -37
  4. data/ext/nokogiri/nokogiri.c +12 -6
  5. data/ext/nokogiri/nokogiri.h +13 -0
  6. data/ext/nokogiri/xml_document.c +16 -2
  7. data/ext/nokogiri/xml_io.c +8 -6
  8. data/ext/nokogiri/xml_node.c +20 -0
  9. data/ext/nokogiri/xml_reader.c +6 -17
  10. data/ext/nokogiri/xml_schema.c +29 -0
  11. data/ext/nokogiri/xslt_stylesheet.c +0 -4
  12. data/lib/nokogiri.rb +3 -20
  13. data/lib/nokogiri/css.rb +1 -0
  14. data/lib/nokogiri/css/node.rb +1 -0
  15. data/lib/nokogiri/css/parser.rb +61 -60
  16. data/lib/nokogiri/css/parser_extras.rb +39 -36
  17. data/lib/nokogiri/css/syntax_error.rb +1 -0
  18. data/lib/nokogiri/css/tokenizer.rb +1 -0
  19. data/lib/nokogiri/css/xpath_visitor.rb +3 -1
  20. data/lib/nokogiri/decorators/slop.rb +1 -0
  21. data/lib/nokogiri/html.rb +1 -0
  22. data/lib/nokogiri/html/builder.rb +1 -0
  23. data/lib/nokogiri/html/document.rb +1 -0
  24. data/lib/nokogiri/html/document_fragment.rb +1 -0
  25. data/lib/nokogiri/html/element_description.rb +1 -0
  26. data/lib/nokogiri/html/element_description_defaults.rb +1 -0
  27. data/lib/nokogiri/html/entity_lookup.rb +1 -0
  28. data/lib/nokogiri/html/sax/parser.rb +1 -0
  29. data/lib/nokogiri/html/sax/parser_context.rb +1 -0
  30. data/lib/nokogiri/html/sax/push_parser.rb +1 -0
  31. data/lib/nokogiri/jruby/dependencies.rb +20 -0
  32. data/lib/nokogiri/syntax_error.rb +1 -0
  33. data/lib/nokogiri/version.rb +86 -45
  34. data/lib/nokogiri/xml.rb +1 -0
  35. data/lib/nokogiri/xml/attr.rb +1 -0
  36. data/lib/nokogiri/xml/attribute_decl.rb +1 -0
  37. data/lib/nokogiri/xml/builder.rb +3 -2
  38. data/lib/nokogiri/xml/cdata.rb +1 -0
  39. data/lib/nokogiri/xml/character_data.rb +1 -0
  40. data/lib/nokogiri/xml/document.rb +3 -8
  41. data/lib/nokogiri/xml/document_fragment.rb +1 -0
  42. data/lib/nokogiri/xml/dtd.rb +1 -0
  43. data/lib/nokogiri/xml/element_content.rb +1 -0
  44. data/lib/nokogiri/xml/element_decl.rb +1 -0
  45. data/lib/nokogiri/xml/entity_decl.rb +1 -0
  46. data/lib/nokogiri/xml/entity_reference.rb +1 -0
  47. data/lib/nokogiri/xml/namespace.rb +1 -0
  48. data/lib/nokogiri/xml/node.rb +539 -224
  49. data/lib/nokogiri/xml/node/save_options.rb +1 -0
  50. data/lib/nokogiri/xml/node_set.rb +1 -0
  51. data/lib/nokogiri/xml/notation.rb +1 -0
  52. data/lib/nokogiri/xml/parse_options.rb +4 -3
  53. data/lib/nokogiri/xml/pp.rb +1 -0
  54. data/lib/nokogiri/xml/pp/character_data.rb +1 -0
  55. data/lib/nokogiri/xml/pp/node.rb +1 -0
  56. data/lib/nokogiri/xml/processing_instruction.rb +1 -0
  57. data/lib/nokogiri/xml/reader.rb +7 -3
  58. data/lib/nokogiri/xml/relax_ng.rb +1 -0
  59. data/lib/nokogiri/xml/sax.rb +1 -0
  60. data/lib/nokogiri/xml/sax/document.rb +1 -0
  61. data/lib/nokogiri/xml/sax/parser.rb +1 -0
  62. data/lib/nokogiri/xml/sax/parser_context.rb +1 -0
  63. data/lib/nokogiri/xml/sax/push_parser.rb +1 -0
  64. data/lib/nokogiri/xml/schema.rb +1 -0
  65. data/lib/nokogiri/xml/searchable.rb +22 -15
  66. data/lib/nokogiri/xml/syntax_error.rb +1 -0
  67. data/lib/nokogiri/xml/text.rb +1 -0
  68. data/lib/nokogiri/xml/xpath.rb +1 -0
  69. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -0
  70. data/lib/nokogiri/xml/xpath_context.rb +1 -0
  71. data/lib/nokogiri/xslt.rb +1 -0
  72. data/lib/nokogiri/xslt/stylesheet.rb +1 -0
  73. data/lib/xsd/xmlparser/nokogiri.rb +1 -0
  74. metadata +54 -33
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class Node
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  ####
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class Notation < Struct.new(:name, :public_id, :system_id)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  ###
@@ -5,11 +6,11 @@ module Nokogiri
5
6
  #
6
7
  # == Building combinations of parse options
7
8
  # You can build your own combinations of these parse options by using any of the following methods:
8
- # *Note*: All examples attempt to set the +RECOVER+ & +NOENT+ options. All examples use Ruby 2 optional parameter syntax.
9
+ # *Note*: All examples attempt to set the +RECOVER+ & +NOENT+ options.
9
10
  # [Ruby's bitwise operators] You can use the Ruby bitwise operators to set various combinations.
10
- # Nokogiri.XML('<content>Chapter 1</content', options: Nokogiri::XML::ParseOptions.new((1 << 0) | (1 << 1)))
11
+ # Nokogiri.XML('<content>Chapter 1</content', nil, nil, Nokogiri::XML::ParseOptions.new((1 << 0) | (1 << 1)))
11
12
  # [Method chaining] Every option has an equivalent method in lowercase. You can chain these methods together to set various combinations.
12
- # Nokogiri.XML('<content>Chapter 1</content', options: Nokogiri::XML::ParseOptions.new.recover.noent)
13
+ # Nokogiri.XML('<content>Chapter 1</content', nil, nil, Nokogiri::XML::ParseOptions.new.recover.noent)
13
14
  # [Using Ruby Blocks] You can also setup parse combinations in the block passed to Nokogiri.XML or Nokogiri.HTML
14
15
  # Nokogiri.XML('<content>Chapter 1</content') {|config| config.recover.noent}
15
16
  #
@@ -1,2 +1,3 @@
1
+ # frozen_string_literal: true
1
2
  require 'nokogiri/xml/pp/node'
2
3
  require 'nokogiri/xml/pp/character_data'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  module PP
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  module PP
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class ProcessingInstruction < Node
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  ###
@@ -87,9 +88,12 @@ module Nokogiri
87
88
  ###
88
89
  # Get a list of attributes for the current node.
89
90
  def attributes
90
- Hash[attribute_nodes.map { |node|
91
- [node.name, node.to_s]
92
- }].merge(namespaces || {})
91
+ attrs_hash = attribute_nodes.each_with_object({}) do |node, hash|
92
+ hash[node.name] = node.to_s
93
+ end
94
+ ns = namespaces
95
+ attrs_hash.merge!(ns) if ns
96
+ attrs_hash
93
97
  end
94
98
 
95
99
  ###
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class << self
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'nokogiri/xml/sax/document'
2
3
  require 'nokogiri/xml/sax/parser_context'
3
4
  require 'nokogiri/xml/sax/parser'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  ###
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  module SAX
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  module SAX
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  module SAX
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class << self
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  #
@@ -11,7 +12,9 @@ module Nokogiri
11
12
  # Regular expression used by Searchable#search to determine if a query
12
13
  # string is CSS or XPath
13
14
  LOOKS_LIKE_XPATH = /^(\.\/|\/|\.\.|\.$)/
14
-
15
+
16
+ # @!group Searching via XPath or CSS Queries
17
+
15
18
  ###
16
19
  # call-seq: search *paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class]
17
20
  #
@@ -45,7 +48,7 @@ module Nokogiri
45
48
  # )
46
49
  #
47
50
  # See Searchable#xpath and Searchable#css for further usage help.
48
- def search *args
51
+ def search(*args)
49
52
  paths, handler, ns, binds = extract_params(args)
50
53
 
51
54
  xpaths = paths.map(&:to_s).map do |path|
@@ -54,6 +57,7 @@ module Nokogiri
54
57
 
55
58
  xpath(*(xpaths + [ns, handler, binds].compact))
56
59
  end
60
+
57
61
  alias :/ :search
58
62
 
59
63
  ###
@@ -63,9 +67,10 @@ module Nokogiri
63
67
  # result. +paths+ must be one or more XPath or CSS queries.
64
68
  #
65
69
  # See Searchable#search for more information.
66
- def at *args
70
+ def at(*args)
67
71
  search(*args).first
68
72
  end
73
+
69
74
  alias :% :at
70
75
 
71
76
  ###
@@ -101,7 +106,7 @@ module Nokogiri
101
106
  # found in an XML document, where tags names are case-sensitive
102
107
  # (e.g., "H1" is distinct from "h1").
103
108
  #
104
- def css *args
109
+ def css(*args)
105
110
  rules, handler, ns, _ = extract_params(args)
106
111
 
107
112
  css_internal self, rules, handler, ns
@@ -114,7 +119,7 @@ module Nokogiri
114
119
  # match. +rules+ must be one or more CSS selectors.
115
120
  #
116
121
  # See Searchable#css for more information.
117
- def at_css *args
122
+ def at_css(*args)
118
123
  css(*args).first
119
124
  end
120
125
 
@@ -148,7 +153,7 @@ module Nokogiri
148
153
  # end
149
154
  # }.new)
150
155
  #
151
- def xpath *args
156
+ def xpath(*args)
152
157
  paths, handler, ns, binds = extract_params(args)
153
158
 
154
159
  xpath_internal self, paths, handler, ns, binds
@@ -161,17 +166,19 @@ module Nokogiri
161
166
  # match. +paths+ must be one or more XPath queries.
162
167
  #
163
168
  # See Searchable#xpath for more information.
164
- def at_xpath *args
169
+ def at_xpath(*args)
165
170
  xpath(*args).first
166
171
  end
167
172
 
173
+ # @!endgroup
174
+
168
175
  private
169
176
 
170
- def css_internal node, rules, handler, ns
177
+ def css_internal(node, rules, handler, ns)
171
178
  xpath_internal node, css_rules_to_xpath(rules, ns), handler, ns, nil
172
179
  end
173
180
 
174
- def xpath_internal node, paths, handler, ns, binds
181
+ def xpath_internal(node, paths, handler, ns, binds)
175
182
  document = node.document
176
183
  return NodeSet.new(document) unless document
177
184
 
@@ -186,12 +193,12 @@ module Nokogiri
186
193
  end
187
194
  end
188
195
 
189
- def xpath_impl node, path, handler, ns, binds
196
+ def xpath_impl(node, path, handler, ns, binds)
190
197
  ctx = XPathContext.new(node)
191
198
  ctx.register_namespaces(ns)
192
- path = path.gsub(/xmlns:/, ' :') unless Nokogiri.uses_libxml?
199
+ path = path.gsub(/xmlns:/, " :") unless Nokogiri.uses_libxml?
193
200
 
194
- binds.each do |key,value|
201
+ binds.each do |key, value|
195
202
  ctx.register_variable key.to_s, value
196
203
  end if binds
197
204
 
@@ -202,13 +209,13 @@ module Nokogiri
202
209
  rules.map { |rule| xpath_query_from_css_rule(rule, ns) }
203
210
  end
204
211
 
205
- def xpath_query_from_css_rule rule, ns
212
+ def xpath_query_from_css_rule(rule, ns)
206
213
  self.class::IMPLIED_XPATH_CONTEXTS.map do |implied_xpath_context|
207
214
  CSS.xpath_for(rule.to_s, :prefix => implied_xpath_context, :ns => ns)
208
- end.join(' | ')
215
+ end.join(" | ")
209
216
  end
210
217
 
211
- def extract_params params # :nodoc:
218
+ def extract_params(params) # :nodoc:
212
219
  handler = params.find do |param|
213
220
  ![Hash, String, Symbol].include?(param.class)
214
221
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  ###
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class Text < Nokogiri::XML::CharacterData
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'nokogiri/xml/xpath/syntax_error'
2
3
 
3
4
  module Nokogiri
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class XPath
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XML
3
4
  class XPathContext
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'nokogiri/xslt/stylesheet'
2
3
 
3
4
  module Nokogiri
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Nokogiri
2
3
  module XSLT
3
4
  ###
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'nokogiri'
2
3
 
3
4
  module XSD # :nodoc:
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.10.8
4
+ version: 1.11.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2020-02-10 00:00:00.000000000 Z
17
+ date: 2020-09-08 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: mini_portile2
@@ -22,28 +22,48 @@ dependencies:
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 2.4.0
25
+ version: 2.5.0
26
26
  type: :runtime
27
27
  prerelease: false
28
28
  version_requirements: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 2.4.0
32
+ version: 2.5.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: concourse
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.24'
39
+ version: '0.34'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.24'
46
+ version: '0.34'
47
+ - !ruby/object:Gem::Dependency
48
+ name: hoe
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.22'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 3.22.1
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '3.22'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 3.22.1
47
67
  - !ruby/object:Gem::Dependency
48
68
  name: hoe-bundler
49
69
  requirement: !ruby/object:Gem::Requirement
@@ -100,6 +120,20 @@ dependencies:
100
120
  - - "~>"
101
121
  - !ruby/object:Gem::Version
102
122
  version: '1.6'
123
+ - !ruby/object:Gem::Dependency
124
+ name: hoe-markdown
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '1.1'
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'
103
137
  - !ruby/object:Gem::Dependency
104
138
  name: minitest
105
139
  requirement: !ruby/object:Gem::Requirement
@@ -134,42 +168,42 @@ dependencies:
134
168
  requirements:
135
169
  - - "~>"
136
170
  - !ruby/object:Gem::Version
137
- version: '12.0'
171
+ version: '13.0'
138
172
  type: :development
139
173
  prerelease: false
140
174
  version_requirements: !ruby/object:Gem::Requirement
141
175
  requirements:
142
176
  - - "~>"
143
177
  - !ruby/object:Gem::Version
144
- version: '12.0'
178
+ version: '13.0'
145
179
  - !ruby/object:Gem::Dependency
146
180
  name: rake-compiler
147
181
  requirement: !ruby/object:Gem::Requirement
148
182
  requirements:
149
183
  - - "~>"
150
184
  - !ruby/object:Gem::Version
151
- version: 1.1.0
185
+ version: '1.1'
152
186
  type: :development
153
187
  prerelease: false
154
188
  version_requirements: !ruby/object:Gem::Requirement
155
189
  requirements:
156
190
  - - "~>"
157
191
  - !ruby/object:Gem::Version
158
- version: 1.1.0
192
+ version: '1.1'
159
193
  - !ruby/object:Gem::Dependency
160
194
  name: rake-compiler-dock
161
195
  requirement: !ruby/object:Gem::Requirement
162
196
  requirements:
163
197
  - - "~>"
164
198
  - !ruby/object:Gem::Version
165
- version: 0.7.0
199
+ version: '1.0'
166
200
  type: :development
167
201
  prerelease: false
168
202
  version_requirements: !ruby/object:Gem::Requirement
169
203
  requirements:
170
204
  - - "~>"
171
205
  - !ruby/object:Gem::Version
172
- version: 0.7.0
206
+ version: '1.0'
173
207
  - !ruby/object:Gem::Dependency
174
208
  name: rexical
175
209
  requirement: !ruby/object:Gem::Requirement
@@ -190,28 +224,28 @@ dependencies:
190
224
  requirements:
191
225
  - - "~>"
192
226
  - !ruby/object:Gem::Version
193
- version: '0.73'
227
+ version: '0.88'
194
228
  type: :development
195
229
  prerelease: false
196
230
  version_requirements: !ruby/object:Gem::Requirement
197
231
  requirements:
198
232
  - - "~>"
199
233
  - !ruby/object:Gem::Version
200
- version: '0.73'
234
+ version: '0.88'
201
235
  - !ruby/object:Gem::Dependency
202
236
  name: simplecov
203
237
  requirement: !ruby/object:Gem::Requirement
204
238
  requirements:
205
239
  - - "~>"
206
240
  - !ruby/object:Gem::Version
207
- version: '0.16'
241
+ version: 0.17.0
208
242
  type: :development
209
243
  prerelease: false
210
244
  version_requirements: !ruby/object:Gem::Requirement
211
245
  requirements:
212
246
  - - "~>"
213
247
  - !ruby/object:Gem::Version
214
- version: '0.16'
248
+ version: 0.17.0
215
249
  - !ruby/object:Gem::Dependency
216
250
  name: rdoc
217
251
  requirement: !ruby/object:Gem::Requirement
@@ -232,20 +266,6 @@ dependencies:
232
266
  - - "<"
233
267
  - !ruby/object:Gem::Version
234
268
  version: '7'
235
- - !ruby/object:Gem::Dependency
236
- name: hoe
237
- requirement: !ruby/object:Gem::Requirement
238
- requirements:
239
- - - "~>"
240
- - !ruby/object:Gem::Version
241
- version: '3.22'
242
- type: :development
243
- prerelease: false
244
- version_requirements: !ruby/object:Gem::Requirement
245
- requirements:
246
- - - "~>"
247
- - !ruby/object:Gem::Version
248
- version: '3.22'
249
269
  description: |-
250
270
  Nokogiri (鋸) is an HTML, XML, SAX, and Reader parser. Among
251
271
  Nokogiri's many features is the ability to search documents via XPath
@@ -397,6 +417,7 @@ files:
397
417
  - lib/nokogiri/html/sax/parser.rb
398
418
  - lib/nokogiri/html/sax/parser_context.rb
399
419
  - lib/nokogiri/html/sax/push_parser.rb
420
+ - lib/nokogiri/jruby/dependencies.rb
400
421
  - lib/nokogiri/syntax_error.rb
401
422
  - lib/nokogiri/version.rb
402
423
  - lib/nokogiri/xml.rb
@@ -465,12 +486,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
465
486
  requirements:
466
487
  - - ">="
467
488
  - !ruby/object:Gem::Version
468
- version: 2.3.0
489
+ version: 2.4.0
469
490
  required_rubygems_version: !ruby/object:Gem::Requirement
470
491
  requirements:
471
- - - ">="
492
+ - - ">"
472
493
  - !ruby/object:Gem::Version
473
- version: '0'
494
+ version: 1.3.1
474
495
  requirements: []
475
496
  rubygems_version: 3.1.2
476
497
  signing_key: