nokogiri 1.5.8-java → 1.5.9-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.
- data/CHANGELOG.ja.rdoc +9 -0
- data/CHANGELOG.rdoc +9 -0
- data/ext/java/nokogiri/XmlNode.java +4 -1
- data/ext/nokogiri/xml_node.c +7 -2
- data/lib/nokogiri/nokogiri.jar +0 -0
- data/lib/nokogiri/version.rb +1 -1
- data/lib/nokogiri/xml/node.rb +13 -4
- data/test/html/test_node.rb +8 -0
- data/test/namespaces/test_namespaces_in_builder_doc.rb +9 -0
- data/test/namespaces/test_namespaces_in_created_doc.rb +7 -0
- data/test/test_memory_leak.rb +4 -0
- data/test/xml/test_node_attributes.rb +14 -0
- metadata +2 -2
data/CHANGELOG.ja.rdoc
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
|
2
|
+
=== 1.5.9 / 2013年03月21日
|
3
|
+
|
4
|
+
* Bugfixes
|
5
|
+
|
6
|
+
* Ensure that prefixed attributes are properly namespaced when reparented. #869
|
7
|
+
* Fix for inconsistent namespaced attribute access for SVG nested in HTML. #861
|
8
|
+
* (MRI) Fixed a memory leak in fragment parsing if nodes are not all subsequently reparented. #856
|
9
|
+
|
10
|
+
|
2
11
|
=== 1.5.8 / 2013年03月19日
|
3
12
|
|
4
13
|
* Bugfixes
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
|
2
|
+
=== 1.5.9 / 2013-03-21
|
3
|
+
|
4
|
+
* Bugfixes
|
5
|
+
|
6
|
+
* Ensure that prefixed attributes are properly namespaced when reparented. #869
|
7
|
+
* Fix for inconsistent namespaced attribute access for SVG nested in HTML. #861
|
8
|
+
* (MRI) Fixed a memory leak in fragment parsing if nodes are not all subsequently reparented. #856
|
9
|
+
|
10
|
+
|
2
11
|
=== 1.5.8 / 2013-03-19
|
3
12
|
|
4
13
|
* Bugfixes
|
@@ -1199,10 +1199,10 @@ public class XmlNode extends RubyObject {
|
|
1199
1199
|
String val = rubyStringToString(rbval);
|
1200
1200
|
Element element = (Element) node;
|
1201
1201
|
|
1202
|
+
String uri = null;
|
1202
1203
|
int colonIndex = key.indexOf(":");
|
1203
1204
|
if (colonIndex > 0) {
|
1204
1205
|
String prefix = key.substring(0, colonIndex);
|
1205
|
-
String uri = null;
|
1206
1206
|
if (prefix.equals("xml")) {
|
1207
1207
|
uri = "http://www.w3.org/XML/1998/namespace";
|
1208
1208
|
} else if (prefix.equals("xmlns")) {
|
@@ -1210,6 +1210,9 @@ public class XmlNode extends RubyObject {
|
|
1210
1210
|
} else {
|
1211
1211
|
uri = findNamespaceHref(context, prefix);
|
1212
1212
|
}
|
1213
|
+
}
|
1214
|
+
|
1215
|
+
if (uri != null) {
|
1213
1216
|
element.setAttributeNS(uri, key, val);
|
1214
1217
|
} else {
|
1215
1218
|
element.setAttribute(key, val);
|
data/ext/nokogiri/xml_node.c
CHANGED
@@ -753,6 +753,8 @@ static VALUE get(VALUE self, VALUE rattribute)
|
|
753
753
|
ns = xmlSearchNs(node->doc, node, (const xmlChar *)(prefix));
|
754
754
|
if (ns) {
|
755
755
|
value = xmlGetNsProp(node, (xmlChar*)(attr_name), ns->href);
|
756
|
+
} else {
|
757
|
+
value = xmlGetProp(node, (xmlChar*)StringValuePtr(rattribute));
|
756
758
|
}
|
757
759
|
} else {
|
758
760
|
value = xmlGetNoNsProp(node, (xmlChar*)attribute);
|
@@ -1268,7 +1270,7 @@ static VALUE process_xincludes(VALUE self, VALUE options)
|
|
1268
1270
|
/* TODO: DOCUMENT ME */
|
1269
1271
|
static VALUE in_context(VALUE self, VALUE _str, VALUE _options)
|
1270
1272
|
{
|
1271
|
-
xmlNodePtr node, list = 0, child_iter, node_children, doc_children;
|
1273
|
+
xmlNodePtr node, list = 0, tmp, child_iter, node_children, doc_children;
|
1272
1274
|
xmlNodeSetPtr set;
|
1273
1275
|
xmlParserErrors error;
|
1274
1276
|
VALUE doc, err;
|
@@ -1355,8 +1357,11 @@ static VALUE in_context(VALUE self, VALUE _str, VALUE _options)
|
|
1355
1357
|
set = xmlXPathNodeSetCreate(NULL);
|
1356
1358
|
|
1357
1359
|
while (list) {
|
1360
|
+
tmp = list->next;
|
1361
|
+
list->next = NULL;
|
1358
1362
|
xmlXPathNodeSetAddUnique(set, list);
|
1359
|
-
list
|
1363
|
+
nokogiri_root_node(list);
|
1364
|
+
list = tmp;
|
1360
1365
|
}
|
1361
1366
|
|
1362
1367
|
return Nokogiri_wrap_xml_node_set(set, doc);
|
data/lib/nokogiri/nokogiri.jar
CHANGED
Binary file
|
data/lib/nokogiri/version.rb
CHANGED
data/lib/nokogiri/xml/node.rb
CHANGED
@@ -270,9 +270,9 @@ module Nokogiri
|
|
270
270
|
def add_child node_or_tags
|
271
271
|
node_or_tags = coerce(node_or_tags)
|
272
272
|
if node_or_tags.is_a?(XML::NodeSet)
|
273
|
-
node_or_tags.each { |n|
|
273
|
+
node_or_tags.each { |n| add_child_node_and_reparent_attrs n }
|
274
274
|
else
|
275
|
-
|
275
|
+
add_child_node_and_reparent_attrs node_or_tags
|
276
276
|
end
|
277
277
|
node_or_tags
|
278
278
|
end
|
@@ -361,9 +361,9 @@ module Nokogiri
|
|
361
361
|
node_or_tags = coerce(node_or_tags)
|
362
362
|
children.unlink
|
363
363
|
if node_or_tags.is_a?(XML::NodeSet)
|
364
|
-
node_or_tags.each { |n|
|
364
|
+
node_or_tags.each { |n| add_child_node_and_reparent_attrs n }
|
365
365
|
else
|
366
|
-
|
366
|
+
add_child_node_and_reparent_attrs node_or_tags
|
367
367
|
end
|
368
368
|
node_or_tags
|
369
369
|
end
|
@@ -938,6 +938,15 @@ Requires a Node, NodeSet or String argument, and cannot accept a #{data.class}.
|
|
938
938
|
def inspect_attributes
|
939
939
|
[:name, :namespace, :attribute_nodes, :children]
|
940
940
|
end
|
941
|
+
|
942
|
+
def add_child_node_and_reparent_attrs node
|
943
|
+
add_child_node node
|
944
|
+
node.attribute_nodes.find_all { |a| a.name =~ /:/ }.each do |attr_node|
|
945
|
+
attr_node.remove
|
946
|
+
node[attr_node.name] = attr_node.value
|
947
|
+
end
|
948
|
+
end
|
949
|
+
|
941
950
|
end
|
942
951
|
end
|
943
952
|
end
|
data/test/html/test_node.rb
CHANGED
@@ -34,6 +34,14 @@ module Nokogiri
|
|
34
34
|
assert_match(/%22AGGA-KA-BOO!%22/, element.to_html)
|
35
35
|
end
|
36
36
|
|
37
|
+
# The HTML parser ignores namespaces, so even properly declared namespaces
|
38
|
+
# are treated as as undeclared and have to be accessed via prefix:tagname
|
39
|
+
def test_ns_attribute
|
40
|
+
html = '<i foo:bar="baz"></i>'
|
41
|
+
doc = Nokogiri::HTML(html)
|
42
|
+
assert_equal 'baz', (doc%'i')['foo:bar']
|
43
|
+
end
|
44
|
+
|
37
45
|
def test_css_path_round_trip
|
38
46
|
doc = Nokogiri::HTML(File.read(HTML_FILE))
|
39
47
|
%w{ #header small div[2] div.post body }.each do |css_sel|
|
@@ -61,6 +61,15 @@ module Nokogiri
|
|
61
61
|
ns_attrs = n.to_xml.scan(/\bxmlns(?::.+?)?=/)
|
62
62
|
assert_equal 3, ns_attrs.length
|
63
63
|
end
|
64
|
+
|
65
|
+
def test_builder_namespaced_attribute_on_unparented_node
|
66
|
+
doc = Nokogiri::XML::Builder.new do |x|
|
67
|
+
x.root('xmlns:foo' => 'http://foo.io') {
|
68
|
+
x.obj('foo:attr' => 'baz')
|
69
|
+
}
|
70
|
+
end.doc
|
71
|
+
assert_equal 'http://foo.io', doc.root.children.first.attribute_nodes.first.namespace.href
|
72
|
+
end
|
64
73
|
end
|
65
74
|
end
|
66
75
|
end
|
@@ -63,6 +63,13 @@ module Nokogiri
|
|
63
63
|
ns_attrs = n.to_xml.scan(/\bxmlns(?::.+?)?=/)
|
64
64
|
assert_equal 3, ns_attrs.length
|
65
65
|
end
|
66
|
+
|
67
|
+
def test_created_namespaced_attribute_on_unparented_node
|
68
|
+
doc = Nokogiri::XML('<root xmlns:foo="http://foo.io"/>')
|
69
|
+
node = @doc.create_element('obj', 'foo:attr' => 'baz')
|
70
|
+
doc.root.add_child(node)
|
71
|
+
assert_equal 'http://foo.io', doc.root.children.first.attribute_nodes.first.namespace.href
|
72
|
+
end
|
66
73
|
end
|
67
74
|
end
|
68
75
|
end
|
data/test/test_memory_leak.rb
CHANGED
@@ -45,6 +45,20 @@ module Nokogiri
|
|
45
45
|
assert_equal 'x', node.attributes['bar'].namespace.href
|
46
46
|
end
|
47
47
|
|
48
|
+
def test_append_child_namespace_definitions_prefixed_attributes
|
49
|
+
doc = Nokogiri::XML "<root/>"
|
50
|
+
node = doc.root
|
51
|
+
|
52
|
+
node['xml:lang'] = 'en-GB'
|
53
|
+
|
54
|
+
assert_equal [], node.namespace_definitions.map(&:prefix)
|
55
|
+
|
56
|
+
child_node = Nokogiri::XML::Node.new 'foo', doc
|
57
|
+
node << child_node
|
58
|
+
|
59
|
+
assert_equal [], node.namespace_definitions.map(&:prefix)
|
60
|
+
end
|
61
|
+
|
48
62
|
def test_namespace_key?
|
49
63
|
doc = Nokogiri::XML <<-eoxml
|
50
64
|
<root xmlns:tlm='http://tenderlovemaking.com/'>
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: nokogiri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.5.
|
5
|
+
version: 1.5.9
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- Aaron Patterson
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-03-
|
15
|
+
date: 2013-03-21 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: hoe-bundler
|