nokogiri 1.18.0.rc1-java → 1.18.1-java
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 -3
- data/ext/java/nokogiri/XmlXpathContext.java +19 -2
- data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +6 -0
- data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +6 -0
- data/ext/nokogiri/xml_sax_parser_context.c +8 -2
- data/ext/nokogiri/xml_xpath_context.c +1 -17
- data/lib/nokogiri/nokogiri.jar +0 -0
- data/lib/nokogiri/version/constant.rb +1 -1
- data/lib/nokogiri/xml/searchable.rb +5 -28
- data/lib/nokogiri/xml/xpath_context.rb +0 -22
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa9083455f575ed7d510dd06d7493f9965119161b36055a42633778524561441
|
4
|
+
data.tar.gz: 6676a22d5766bd7622b6332160aac208be8e3605d6fc0bbf29323a87fd69a83c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7735ea1266e0dcd2f3a896ec40b9d8908c1987109c542523a3e48160ca7b77d61e0d315d85960a3eff0db59c818c3bbfffb846913a22617eec45c45728df66a3
|
7
|
+
data.tar.gz: aced9ad5b05847a538943711fa446016120a6d41f230b3a68141356512995ba6a05181cbd095a0e96a3120011c2cd791a8381f0825b158152cbef4db0f0c39d8
|
data/Gemfile
CHANGED
@@ -11,7 +11,7 @@ group :development do
|
|
11
11
|
|
12
12
|
# building extensions
|
13
13
|
gem "rake-compiler", "1.2.8"
|
14
|
-
gem "rake-compiler-dock", "1.7.0
|
14
|
+
gem "rake-compiler-dock", "1.7.0"
|
15
15
|
|
16
16
|
# parser generator
|
17
17
|
gem "rexical", "1.0.8"
|
@@ -33,6 +33,8 @@ end
|
|
33
33
|
# If Psych doesn't build, you can disable this group locally by running
|
34
34
|
# `bundle config set --local without rdoc`
|
35
35
|
# Then re-run `bundle install`.
|
36
|
-
|
37
|
-
|
36
|
+
unless RUBY_PLATFORM == "java" # see #3391 and https://github.com/jruby/jruby/issues/7262
|
37
|
+
group :rdoc do
|
38
|
+
gem "rdoc", "6.10.0"
|
39
|
+
end
|
38
40
|
end
|
@@ -154,7 +154,11 @@ public class XmlXpathContext extends RubyObject
|
|
154
154
|
public IRubyObject
|
155
155
|
register_ns(IRubyObject prefix, IRubyObject uri)
|
156
156
|
{
|
157
|
-
|
157
|
+
if (uri.isNil()) {
|
158
|
+
nsContext.deregisterNamespace(prefix.asJavaString());
|
159
|
+
} else {
|
160
|
+
nsContext.registerNamespace(prefix.asJavaString(), uri.asJavaString());
|
161
|
+
}
|
158
162
|
return this;
|
159
163
|
}
|
160
164
|
|
@@ -169,10 +173,23 @@ public class XmlXpathContext extends RubyObject
|
|
169
173
|
variableResolver = NokogiriXPathVariableResolver.create();
|
170
174
|
this.variableResolver = variableResolver;
|
171
175
|
}
|
172
|
-
|
176
|
+
if (value.isNil()) {
|
177
|
+
variableResolver.deregisterVariable(name.asJavaString());
|
178
|
+
} else {
|
179
|
+
variableResolver.registerVariable(name.asJavaString(), value.asJavaString());
|
180
|
+
}
|
173
181
|
return this;
|
174
182
|
}
|
175
183
|
|
184
|
+
@JRubyMethod(name = "node=")
|
185
|
+
public IRubyObject
|
186
|
+
set_node(ThreadContext context, IRubyObject rb_node)
|
187
|
+
{
|
188
|
+
this.context = (XmlNode) rb_node;
|
189
|
+
return rb_node;
|
190
|
+
}
|
191
|
+
|
192
|
+
|
176
193
|
private IRubyObject
|
177
194
|
node_set(ThreadContext context, String expr, IRubyObject handler)
|
178
195
|
{
|
@@ -107,4 +107,10 @@ public final class NokogiriNamespaceContext implements NamespaceContext
|
|
107
107
|
register.put(prefix, uri);
|
108
108
|
}
|
109
109
|
|
110
|
+
public void
|
111
|
+
deregisterNamespace(String prefix)
|
112
|
+
{
|
113
|
+
if ("xmlns".equals(prefix)) { prefix = ""; }
|
114
|
+
register.remove(prefix);
|
115
|
+
}
|
110
116
|
}
|
@@ -102,7 +102,10 @@ noko_xml_sax_parser_context_s_native_io(VALUE rb_class, VALUE rb_io, VALUE rb_en
|
|
102
102
|
c_context->sax = NULL;
|
103
103
|
}
|
104
104
|
|
105
|
-
|
105
|
+
VALUE rb_context = noko_xml_sax_parser_context_wrap(rb_class, c_context);
|
106
|
+
rb_iv_set(rb_context, "@input", rb_io);
|
107
|
+
|
108
|
+
return rb_context;
|
106
109
|
}
|
107
110
|
|
108
111
|
/* :nodoc: */
|
@@ -154,7 +157,10 @@ noko_xml_sax_parser_context_s_native_memory(VALUE rb_class, VALUE rb_input, VALU
|
|
154
157
|
c_context->sax = NULL;
|
155
158
|
}
|
156
159
|
|
157
|
-
|
160
|
+
VALUE rb_context = noko_xml_sax_parser_context_wrap(rb_class, c_context);
|
161
|
+
rb_iv_set(rb_context, "@input", rb_input);
|
162
|
+
|
163
|
+
return rb_context;
|
158
164
|
}
|
159
165
|
|
160
166
|
/*
|
@@ -144,13 +144,6 @@ noko_xml_xpath_context_register_ns(VALUE rb_context, VALUE prefix, VALUE uri)
|
|
144
144
|
|
145
145
|
xmlXPathRegisterNs(c_context, (const xmlChar *)StringValueCStr(prefix), ns_uri);
|
146
146
|
|
147
|
-
VALUE registered_namespaces = rb_iv_get(rb_context, "@registered_namespaces");
|
148
|
-
if (NIL_P(uri)) {
|
149
|
-
rb_hash_delete(registered_namespaces, prefix);
|
150
|
-
} else {
|
151
|
-
rb_hash_aset(registered_namespaces, prefix, Qtrue);
|
152
|
-
}
|
153
|
-
|
154
147
|
return rb_context;
|
155
148
|
}
|
156
149
|
|
@@ -179,13 +172,6 @@ noko_xml_xpath_context_register_variable(VALUE rb_context, VALUE name, VALUE val
|
|
179
172
|
|
180
173
|
xmlXPathRegisterVariable(c_context, (const xmlChar *)StringValueCStr(name), xmlValue);
|
181
174
|
|
182
|
-
VALUE registered_variables = rb_iv_get(rb_context, "@registered_variables");
|
183
|
-
if (NIL_P(value)) {
|
184
|
-
rb_hash_delete(registered_variables, name);
|
185
|
-
} else {
|
186
|
-
rb_hash_aset(registered_variables, name, Qtrue);
|
187
|
-
}
|
188
|
-
|
189
175
|
return rb_context;
|
190
176
|
}
|
191
177
|
|
@@ -402,6 +388,7 @@ noko_xml_xpath_context_evaluate(int argc, VALUE *argv, VALUE rb_context)
|
|
402
388
|
);
|
403
389
|
}
|
404
390
|
|
391
|
+
/* TODO: use xmlXPathSetErrorHandler (as of 2.13.0) */
|
405
392
|
xmlSetStructuredErrorFunc((void *)rb_errors, noko__error_array_pusher);
|
406
393
|
xmlSetGenericErrorFunc((void *)rb_errors, _noko_xml_xpath_context__generic_exception_pusher);
|
407
394
|
|
@@ -460,9 +447,6 @@ noko_xml_xpath_context_new(VALUE klass, VALUE rb_node)
|
|
460
447
|
|
461
448
|
rb_context = TypedData_Wrap_Struct(klass, &_noko_xml_xpath_context_type, c_context);
|
462
449
|
|
463
|
-
rb_iv_set(rb_context, "@registered_namespaces", rb_hash_new());
|
464
|
-
rb_iv_set(rb_context, "@registered_variables", rb_hash_new());
|
465
|
-
|
466
450
|
return rb_context;
|
467
451
|
}
|
468
452
|
|
data/lib/nokogiri/nokogiri.jar
CHANGED
Binary file
|
@@ -261,36 +261,13 @@ module Nokogiri
|
|
261
261
|
end
|
262
262
|
|
263
263
|
def xpath_impl(node, path, handler, ns, binds)
|
264
|
-
|
265
|
-
|
266
|
-
|
264
|
+
context = XPathContext.new(node)
|
265
|
+
context.register_namespaces(ns)
|
266
|
+
context.register_variables(binds)
|
267
267
|
|
268
|
-
|
268
|
+
path = path.gsub("xmlns:", " :") unless Nokogiri.uses_libxml?
|
269
269
|
|
270
|
-
|
271
|
-
end
|
272
|
-
end
|
273
|
-
|
274
|
-
if Nokogiri.uses_libxml? && ENV["NOKOGIRI_DEOPTIMIZE_XPATH"].nil? # env var is an escape hatch
|
275
|
-
# optimized path
|
276
|
-
def get_xpath_context(node)
|
277
|
-
context = Thread.current.thread_variable_get(:nokogiri_xpath_context)
|
278
|
-
if context
|
279
|
-
context.node = node
|
280
|
-
else
|
281
|
-
context = Thread.current.thread_variable_set(:nokogiri_xpath_context, XPathContext.new(node))
|
282
|
-
end
|
283
|
-
|
284
|
-
begin
|
285
|
-
yield context
|
286
|
-
ensure
|
287
|
-
context.reset
|
288
|
-
end
|
289
|
-
end
|
290
|
-
else
|
291
|
-
def get_xpath_context(node)
|
292
|
-
yield XPathContext.new(node)
|
293
|
-
end
|
270
|
+
context.evaluate(path, handler)
|
294
271
|
end
|
295
272
|
end
|
296
273
|
end
|
@@ -22,28 +22,6 @@ module Nokogiri
|
|
22
22
|
register_variable(key, value)
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
26
|
-
if Nokogiri.uses_libxml?
|
27
|
-
def reset
|
28
|
-
return unless
|
29
|
-
|
30
|
-
@registered_namespaces.each do |key, _|
|
31
|
-
register_ns(key, nil)
|
32
|
-
end
|
33
|
-
unless @registered_namespaces.empty?
|
34
|
-
warn "Nokogiri::XML::XPathContext#reset: unexpected registered namespaces: #{@registered_namespaces.keys}"
|
35
|
-
@registered_namespaces.clear
|
36
|
-
end
|
37
|
-
|
38
|
-
@registered_variables.each do |key, _|
|
39
|
-
register_variable(key, nil)
|
40
|
-
end
|
41
|
-
unless @registered_variables.empty?
|
42
|
-
warn "Nokogiri::XML::XPathContext#reset: unexpected registered variables: #{@registered_variables.keys}"
|
43
|
-
@registered_variables.clear
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
25
|
end
|
48
26
|
end
|
49
27
|
end
|
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.18.
|
4
|
+
version: 1.18.1
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Mike Dalessio
|
@@ -20,7 +20,7 @@ authors:
|
|
20
20
|
autorequire:
|
21
21
|
bindir: bin
|
22
22
|
cert_chain: []
|
23
|
-
date: 2024-12-
|
23
|
+
date: 2024-12-29 00:00:00.000000000 Z
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jar-dependencies
|
@@ -343,9 +343,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
343
343
|
version: 3.1.0
|
344
344
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
345
345
|
requirements:
|
346
|
-
- - "
|
346
|
+
- - ">="
|
347
347
|
- !ruby/object:Gem::Version
|
348
|
-
version:
|
348
|
+
version: '0'
|
349
349
|
requirements:
|
350
350
|
- jar isorelax, isorelax, 20030108
|
351
351
|
- jar org.nokogiri, nekodtd, 0.1.11.noko2
|