nokogiri 1.4.0 → 1.4.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.
- data.tar.gz.sig +0 -0
- data/.autotest +5 -6
- data/CHANGELOG.ja.rdoc +47 -11
- data/CHANGELOG.rdoc +31 -0
- data/Manifest.txt +8 -1
- data/README.ja.rdoc +4 -3
- data/README.rdoc +9 -1
- data/Rakefile +4 -0
- data/deps.rip +5 -0
- data/ext/nokogiri/extconf.rb +4 -0
- data/ext/nokogiri/html_element_description.c +1 -1
- data/ext/nokogiri/nokogiri.c +7 -0
- data/ext/nokogiri/nokogiri.h +4 -1
- data/ext/nokogiri/xml_document.c +3 -5
- data/ext/nokogiri/xml_encoding_handler.c +79 -0
- data/ext/nokogiri/xml_encoding_handler.h +8 -0
- data/ext/nokogiri/xml_namespace.c +8 -0
- data/ext/nokogiri/xml_namespace.h +1 -0
- data/ext/nokogiri/xml_node.c +61 -41
- data/ext/nokogiri/xml_node_set.c +22 -14
- data/ext/nokogiri/xml_sax_parser.c +0 -3
- data/ext/nokogiri/xml_sax_parser_context.c +2 -0
- data/ext/nokogiri/xml_sax_push_parser.c +26 -3
- data/ext/nokogiri/xml_syntax_error.c +18 -227
- data/lib/nokogiri/css/generated_parser.rb +173 -160
- data/lib/nokogiri/css/generated_tokenizer.rb +4 -1
- data/lib/nokogiri/css/parser.y +4 -1
- data/lib/nokogiri/css/tokenizer.rex +2 -1
- data/lib/nokogiri/css/xpath_visitor.rb +2 -0
- data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
- data/lib/nokogiri/ffi/html/element_description.rb +5 -9
- data/lib/nokogiri/ffi/libxml.rb +21 -5
- data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
- data/lib/nokogiri/ffi/structs/xml_document.rb +3 -3
- data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +110 -1
- data/lib/nokogiri/ffi/xml/dtd.rb +2 -4
- data/lib/nokogiri/ffi/xml/node.rb +38 -17
- data/lib/nokogiri/ffi/xml/node_set.rb +21 -8
- data/lib/nokogiri/ffi/xml/reader.rb +1 -1
- data/lib/nokogiri/ffi/xml/sax/parser.rb +1 -8
- data/lib/nokogiri/ffi/xml/sax/push_parser.rb +16 -4
- data/lib/nokogiri/ffi/xml/syntax_error.rb +9 -2
- data/lib/nokogiri/ffi/xslt/stylesheet.rb +12 -9
- data/lib/nokogiri/version.rb +1 -1
- data/lib/nokogiri/xml/builder.rb +1 -1
- data/lib/nokogiri/xml/document.rb +35 -4
- data/lib/nokogiri/xml/document_fragment.rb +5 -1
- data/lib/nokogiri/xml/fragment_handler.rb +28 -20
- data/lib/nokogiri/xml/node.rb +84 -13
- data/lib/nokogiri/xml/node_set.rb +19 -2
- data/lib/nokogiri/xml/sax/push_parser.rb +1 -1
- data/lib/nokogiri/xml/syntax_error.rb +10 -5
- data/lib/nokogiri/xslt/stylesheet.rb +1 -1
- data/lib/xsd/xmlparser/nokogiri.rb +20 -1
- data/test/css/test_parser.rb +5 -0
- data/test/css/test_tokenizer.rb +7 -0
- data/test/helper.rb +0 -5
- data/test/html/test_document_fragment.rb +39 -1
- data/test/html/test_node.rb +14 -0
- data/test/test_encoding_handler.rb +46 -0
- data/test/test_memory_leak.rb +10 -0
- data/test/test_nokogiri.rb +5 -1
- data/test/test_soap4r_sax.rb +52 -0
- data/test/test_xslt_transforms.rb +69 -26
- data/test/xml/sax/test_parser_context.rb +7 -0
- data/test/xml/sax/test_push_parser.rb +33 -0
- data/test/xml/test_document.rb +27 -1
- data/test/xml/test_document_fragment.rb +6 -0
- data/test/xml/test_node.rb +63 -214
- data/test/xml/test_node_reparenting.rb +261 -0
- data/test/xml/test_node_set.rb +51 -0
- data/test/xml/test_syntax_error.rb +0 -15
- metadata +35 -5
- metadata.gz.sig +0 -0
- data/test/test_gc.rb +0 -15
@@ -0,0 +1,261 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
module Nokogiri
|
4
|
+
module XML
|
5
|
+
class TestNodeReparenting < Nokogiri::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
super
|
9
|
+
@xml = Nokogiri::XML "<root><a1>First node</a1><a2>Second node</a2><a3>Third node</a3></root>"
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_add_child_should_insert_at_end_of_children
|
13
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
14
|
+
@xml.root.add_child node
|
15
|
+
assert_equal ["a1", "a2", "a3", "x"], @xml.root.children.collect {|n| n.name}
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_add_child_fragment_should_insert_fragment_roots_at_end_of_children
|
19
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
20
|
+
@xml.root.add_child fragment
|
21
|
+
assert_equal ["a1", "a2", "a3", "b1", "b2"], @xml.root.children.collect {|n| n.name}
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_chevron_works_as_add_child
|
25
|
+
text_node = Nokogiri::XML::Text.new('hello', @xml)
|
26
|
+
assert_equal Nokogiri::XML::Node::TEXT_NODE, text_node.type
|
27
|
+
|
28
|
+
@xml.root << text_node
|
29
|
+
|
30
|
+
assert_equal @xml.root.children.last.content, 'hello'
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_add_child_already_in_the_document_should_move_the_node
|
34
|
+
third_node = @xml.root.children.last
|
35
|
+
first_node = @xml.root.children.first
|
36
|
+
|
37
|
+
@xml.root.add_child(first_node)
|
38
|
+
|
39
|
+
assert_equal 2, @xml.root.children.index(first_node)
|
40
|
+
assert_equal 1, @xml.root.children.index(third_node)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_add_child_from_other_document_should_remove_from_old_document
|
44
|
+
d1 = Nokogiri::XML("<root><item>1</item><item>2</item></root>")
|
45
|
+
d2 = Nokogiri::XML("<root><item>3</item><item>4</item></root>")
|
46
|
+
|
47
|
+
d2.at('root').search('item').each do |item|
|
48
|
+
d1.at('root').add_child item
|
49
|
+
end
|
50
|
+
|
51
|
+
assert_equal 0, d2.search('item').size
|
52
|
+
assert_equal 4, d1.search('item').size
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_add_child_text_node_should_merge_with_adjacent_text_nodes
|
56
|
+
node = @xml.root.children.first
|
57
|
+
old_child = node.children.first
|
58
|
+
new_child = Nokogiri::XML::Text.new('text', @xml)
|
59
|
+
|
60
|
+
node.add_child new_child
|
61
|
+
|
62
|
+
assert_equal "First nodetext", node.children.first.content
|
63
|
+
assert_equal "First nodetext", new_child.content
|
64
|
+
assert_equal "First nodetext", old_child.content
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_add_child_node_following_sequential_text_nodes_should_have_right_path
|
68
|
+
node = @xml.root.children.first
|
69
|
+
node.add_child(Nokogiri::XML::Text.new('text', @xml))
|
70
|
+
|
71
|
+
item = node.add_child(Nokogiri::XML::Element.new('item', @xml))
|
72
|
+
|
73
|
+
assert_equal '/root/a1/item', item.path
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_add_child_node_with_namespace_should_keep_namespace
|
77
|
+
doc = Nokogiri::XML::Document.new
|
78
|
+
item = Nokogiri::XML::Element.new('item', doc)
|
79
|
+
doc.root = item
|
80
|
+
|
81
|
+
entry = Nokogiri::XML::Element.new('entry', doc)
|
82
|
+
entry.add_namespace('tlm', 'http://tenderlovemaking.com')
|
83
|
+
assert_equal 'http://tenderlovemaking.com', entry.namespaces['xmlns:tlm']
|
84
|
+
item.add_child(entry)
|
85
|
+
assert_equal 'http://tenderlovemaking.com', entry.namespaces['xmlns:tlm']
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_add_child_node_should_inherit_namespace
|
89
|
+
doc = Nokogiri::XML(<<-eoxml)
|
90
|
+
<root xmlns="http://tenderlovemaking.com/">
|
91
|
+
<first>
|
92
|
+
</first>
|
93
|
+
</root>
|
94
|
+
eoxml
|
95
|
+
assert node = doc.at('//xmlns:first')
|
96
|
+
child = Nokogiri::XML::Node.new('second', doc)
|
97
|
+
node.add_child(child)
|
98
|
+
assert doc.at('//xmlns:second')
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_add_child_node_should_not_inherit_namespace_if_it_has_one
|
102
|
+
doc = Nokogiri::XML(<<-eoxml)
|
103
|
+
<root xmlns="http://tenderlovemaking.com/" xmlns:foo="http://flavorjon.es/">
|
104
|
+
<first>
|
105
|
+
</first>
|
106
|
+
</root>
|
107
|
+
eoxml
|
108
|
+
assert node = doc.at('//xmlns:first')
|
109
|
+
child = Nokogiri::XML::Node.new('second', doc)
|
110
|
+
|
111
|
+
ns = doc.root.namespace_definitions.detect { |x| x.prefix == "foo" }
|
112
|
+
child.namespace = ns
|
113
|
+
|
114
|
+
node.add_child(child)
|
115
|
+
assert doc.at('//foo:second', "foo" => "http://flavorjon.es/")
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_replace_node_should_remove_previous_node_and_insert_new_node
|
119
|
+
second_node = @xml.root.children[1]
|
120
|
+
|
121
|
+
new_node = Nokogiri::XML::Node.new('foo', @xml)
|
122
|
+
second_node.replace(new_node)
|
123
|
+
|
124
|
+
assert_equal @xml.root.children[1], new_node
|
125
|
+
assert_nil second_node.parent
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_replace_fragment_should_replace_node_with_fragment_roots
|
129
|
+
node = @xml.root.children[1]
|
130
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
131
|
+
fc1 = fragment.children[0]
|
132
|
+
fc2 = fragment.children[1]
|
133
|
+
|
134
|
+
node.replace fragment
|
135
|
+
|
136
|
+
assert_equal 4, @xml.root.children.length
|
137
|
+
assert_equal fc1, @xml.root.children[1]
|
138
|
+
assert_equal fc2, @xml.root.children[2]
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_replace_with_default_namespaces
|
142
|
+
fruits = Nokogiri::XML(<<-eoxml)
|
143
|
+
<fruit xmlns="http://fruits.org">
|
144
|
+
<apple />
|
145
|
+
</fruit>
|
146
|
+
eoxml
|
147
|
+
|
148
|
+
apple = fruits.css('apple').first
|
149
|
+
|
150
|
+
orange = Nokogiri::XML::Node.new('orange', fruits)
|
151
|
+
apple.replace(orange)
|
152
|
+
|
153
|
+
assert_equal orange, fruits.css('orange').first
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_illegal_replace_of_node_with_doc
|
157
|
+
new_node = Nokogiri::XML.parse('<foo>bar</foo>')
|
158
|
+
old_node = @xml.at_css('a1')
|
159
|
+
assert_raises(ArgumentError){ old_node.replace new_node }
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_replace_with_node_from_different_docs
|
163
|
+
xml1 = "<test> <caption>Original caption</caption> </test>"
|
164
|
+
xml2 = "<test> <caption>Replacement caption</caption> </test>"
|
165
|
+
doc1 = Nokogiri::XML(xml1)
|
166
|
+
doc2 = Nokogiri::XML(xml2)
|
167
|
+
caption1 = doc1.xpath("//caption")[0]
|
168
|
+
caption2 = doc2.xpath("//caption")[0]
|
169
|
+
caption1.replace(caption2) # this segfaulted under 1.4.0 and earlier
|
170
|
+
assert_equal "Replacement caption", doc1.css("caption").inner_text
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_add_next_sibling_should_insert_after
|
174
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
175
|
+
@xml.root.children[1].add_next_sibling node
|
176
|
+
assert_equal ["a1", "a2", "x", "a3"], @xml.root.children.collect {|n| n.name}
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_next_equals_should_insert_after
|
180
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
181
|
+
@xml.root.children[1].next = node
|
182
|
+
assert_equal ["a1", "a2", "x", "a3"], @xml.root.children.collect {|n| n.name}
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_add_next_sibling_fragment_should_insert_fragment_roots_after
|
186
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
187
|
+
@xml.root.children[1].add_next_sibling fragment
|
188
|
+
assert_equal ["a1", "a2", "b1", "b2", "a3"], @xml.root.children.collect {|n| n.name}
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_add_next_sibling_text_node_should_merge_with_adjacent_text_nodes
|
192
|
+
node = @xml.root.children.first
|
193
|
+
text = node.children.first
|
194
|
+
new_text = Nokogiri::XML::Text.new('text', @xml)
|
195
|
+
|
196
|
+
text.add_next_sibling new_text
|
197
|
+
|
198
|
+
assert_equal "First nodetext", node.children.first.content
|
199
|
+
assert_equal "First nodetext", text.content
|
200
|
+
assert_equal "First nodetext", new_text.content
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_add_previous_sibling_should_insert_before
|
204
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
205
|
+
@xml.root.children[1].add_previous_sibling node
|
206
|
+
assert_equal ["a1", "x", "a2", "a3"], @xml.root.children.collect {|n| n.name}
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_previous_equals_should_insert_before
|
210
|
+
node = Nokogiri::XML::Node.new('x', @xml)
|
211
|
+
@xml.root.children[1].previous = node
|
212
|
+
assert_equal ["a1", "x", "a2", "a3"], @xml.root.children.collect {|n| n.name}
|
213
|
+
end
|
214
|
+
|
215
|
+
def test_add_previous_sibling_fragment_should_insert_fragment_roots_before
|
216
|
+
fragment = Nokogiri::XML.fragment("<b1>foo</b1><b2>bar</b2>")
|
217
|
+
@xml.root.children[1].add_previous_sibling fragment
|
218
|
+
assert_equal ["a1", "b1", "b2", "a2", "a3"], @xml.root.children.collect {|n| n.name}
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_add_previous_sibling_text_node_should_merge_with_adjacent_text_nodes
|
222
|
+
node = @xml.root.children.first
|
223
|
+
text = node.children.first
|
224
|
+
new_text = Nokogiri::XML::Text.new('text', @xml)
|
225
|
+
|
226
|
+
text.add_previous_sibling new_text
|
227
|
+
|
228
|
+
assert_equal "textFirst node", node.children.first.content
|
229
|
+
assert_equal "textFirst node", text.content
|
230
|
+
assert_equal "textFirst node", new_text.content
|
231
|
+
end
|
232
|
+
|
233
|
+
def test_unlink_then_reparent
|
234
|
+
# see http://github.com/tenderlove/nokogiri/issues#issue/22
|
235
|
+
10.times do
|
236
|
+
STDOUT.putc "."
|
237
|
+
STDOUT.flush
|
238
|
+
begin
|
239
|
+
doc = Nokogiri::XML <<-EOHTML
|
240
|
+
<root>
|
241
|
+
<a>
|
242
|
+
<b/>
|
243
|
+
<c/>
|
244
|
+
</a>
|
245
|
+
</root>
|
246
|
+
EOHTML
|
247
|
+
|
248
|
+
root = doc.at("root")
|
249
|
+
a = root.at("a")
|
250
|
+
b = a.at("b")
|
251
|
+
c = a.at("c")
|
252
|
+
a.add_next_sibling(b.unlink)
|
253
|
+
c.unlink
|
254
|
+
end
|
255
|
+
GC.start
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
data/test/xml/test_node_set.rb
CHANGED
@@ -9,6 +9,11 @@ module Nokogiri
|
|
9
9
|
@list = @xml.css('employee')
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_filter
|
13
|
+
list = @xml.css('address').filter('*[domestic="Yes"]')
|
14
|
+
assert_equal(%w{ Yes } * 4, list.map { |n| n['domestic'] })
|
15
|
+
end
|
16
|
+
|
12
17
|
def test_remove_attr
|
13
18
|
@list.each { |x| x['class'] = 'blah' }
|
14
19
|
assert_equal @list, @list.remove_attr('class')
|
@@ -526,6 +531,52 @@ module Nokogiri
|
|
526
531
|
inspected
|
527
532
|
end
|
528
533
|
|
534
|
+
def test_should_not_splode_when_accessing_namespace_declarations_in_a_node_set
|
535
|
+
xml = Nokogiri::XML "<foo></foo>"
|
536
|
+
node_set = xml.xpath("//namespace::*")
|
537
|
+
assert_equal 1, node_set.size
|
538
|
+
node = node_set.first
|
539
|
+
node.to_s # segfaults in 1.4.0 and earlier
|
540
|
+
|
541
|
+
# if we haven't segfaulted, let's make sure we handled it correctly
|
542
|
+
assert_instance_of Nokogiri::XML::Namespace, node
|
543
|
+
end
|
544
|
+
|
545
|
+
def test_should_not_splode_when_arrayifying_node_set_containing_namespace_declarations
|
546
|
+
xml = Nokogiri::XML "<foo></foo>"
|
547
|
+
node_set = xml.xpath("//namespace::*")
|
548
|
+
assert_equal 1, node_set.size
|
549
|
+
|
550
|
+
node_array = node_set.to_a
|
551
|
+
node = node_array.first
|
552
|
+
node.to_s # segfaults in 1.4.0 and earlier
|
553
|
+
|
554
|
+
# if we haven't segfaulted, let's make sure we handled it correctly
|
555
|
+
assert_instance_of Nokogiri::XML::Namespace, node
|
556
|
+
end
|
557
|
+
|
558
|
+
def test_should_not_splode_when_unlinking_node_set_containing_namespace_declarations
|
559
|
+
xml = Nokogiri::XML "<foo></foo>"
|
560
|
+
node_set = xml.xpath("//namespace::*")
|
561
|
+
assert_equal 1, node_set.size
|
562
|
+
|
563
|
+
node_set.unlink
|
564
|
+
end
|
565
|
+
|
566
|
+
def test_reverse
|
567
|
+
xml = Nokogiri::XML "<root><a />b<c />d<e /></root>"
|
568
|
+
children = xml.root.children
|
569
|
+
assert_instance_of Nokogiri::XML::NodeSet, children
|
570
|
+
|
571
|
+
reversed = children.reverse
|
572
|
+
assert_equal reversed[0], children[4]
|
573
|
+
assert_equal reversed[1], children[3]
|
574
|
+
assert_equal reversed[2], children[2]
|
575
|
+
assert_equal reversed[3], children[1]
|
576
|
+
assert_equal reversed[4], children[0]
|
577
|
+
|
578
|
+
assert_equal children, children.reverse.reverse
|
579
|
+
end
|
529
580
|
end
|
530
581
|
end
|
531
582
|
end
|
@@ -7,21 +7,6 @@ module Nokogiri
|
|
7
7
|
error = Nokogiri::XML::SyntaxError.new 'hello'
|
8
8
|
assert_equal 'hello', error.message
|
9
9
|
end
|
10
|
-
|
11
|
-
def test_exception
|
12
|
-
error = Nokogiri::XML::SyntaxError.new 'hello'
|
13
|
-
dup = error.exception 'world'
|
14
|
-
assert_equal 'hello', dup.message
|
15
|
-
assert_not_equal error.message.object_id, dup.message.object_id
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_initialize_copy
|
19
|
-
error = Nokogiri::XML::SyntaxError.new 'hello'
|
20
|
-
dup = error.dup
|
21
|
-
assert_equal 'hello', dup.message
|
22
|
-
assert_not_equal error.object_id, dup.object_id
|
23
|
-
assert_not_equal error.message.object_id, dup.message.object_id
|
24
|
-
end
|
25
10
|
end
|
26
11
|
end
|
27
12
|
end
|
metadata
CHANGED
@@ -1,16 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nokogiri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
8
8
|
- Mike Dalessio
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
11
|
+
cert_chain:
|
12
|
+
- |
|
13
|
+
-----BEGIN CERTIFICATE-----
|
14
|
+
MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZhYXJv
|
15
|
+
bnAxGTAXBgoJkiaJk/IsZAEZFglydWJ5Zm9yZ2UxEzARBgoJkiaJk/IsZAEZFgNv
|
16
|
+
cmcwHhcNMDkxMTA1MDAwNDQ4WhcNMTAxMTA1MDAwNDQ4WjBBMQ8wDQYDVQQDDAZh
|
17
|
+
YXJvbnAxGTAXBgoJkiaJk/IsZAEZFglydWJ5Zm9yZ2UxEzARBgoJkiaJk/IsZAEZ
|
18
|
+
FgNvcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNSD14Gb2mCX/5
|
19
|
+
fE85uW/jT7fcYI8XolrzdpzfvxD3y+Pt/yA5eciBiE+hNAWU2PM1ZMOq4MOV9EqR
|
20
|
+
hYzupp/zFoC7ZZ3PF8nJBFKgfKNf0sp9o3XCUviaZjoSYNIvGQocrakQo+h3x3Od
|
21
|
+
NqZWtVsLz9P/G1foUBpc95gGGBodbj/CZVc32F+xVvmejqe3RaMLGI70ZOuTcsRi
|
22
|
+
t8V4T7okmUbLi6VmPYlH/9mKvU7ObRHXMYNhkkife5phh8vjsiCd8Q397+jFaL0f
|
23
|
+
Cd23idNV7lbvdjIuYLV+9u5cPkDjANLAnGRaRS1x2SEfH/8g0Te6/jeKfzBH83D0
|
24
|
+
5v5HTx+HAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
25
|
+
BBTs3LnPhoi2m7BTf9tHvNQYsOG7aTANBgkqhkiG9w0BAQUFAAOCAQEAVH7G+nSf
|
26
|
+
WMPz7Iwcnd+WrWWq/mr5ke0qQoiz4tk0h7bsa3fEnUDBiMfmQhv/uBzA4Gkw9zxB
|
27
|
+
IfKljsZq0yE+du/1u2Mph7dMIg2oiwMurpduPpx9sfaqsqSBBOzggxiUEmHDNrPT
|
28
|
+
uTzaid0gdOx/TacZ4RwrEnx6XNkhxC2YaTH2Y68hoJzSzRGtdU2Kk6mT4YraCP+u
|
29
|
+
ETP5hCJAiB5l4jC8U6wwvKQDHTMoaUu3eu/txe1PDjoe3GICzs/e6bzYBWYmKu7J
|
30
|
+
5YM3l5J4rDvIPAGH4VRr5nSs+qbZh+kCdE1khvTxH51xkR3qAfEEogAd2VlnjELM
|
31
|
+
f9Gw8x3RwgLvkA==
|
32
|
+
-----END CERTIFICATE-----
|
12
33
|
|
13
|
-
date: 2009-10
|
34
|
+
date: 2009-12-10 00:00:00 -08:00
|
14
35
|
default_executable:
|
15
36
|
dependencies:
|
16
37
|
- !ruby/object:Gem::Dependency
|
@@ -79,6 +100,7 @@ files:
|
|
79
100
|
- README.rdoc
|
80
101
|
- Rakefile
|
81
102
|
- bin/nokogiri
|
103
|
+
- deps.rip
|
82
104
|
- ext/nokogiri/extconf.rb
|
83
105
|
- ext/nokogiri/html_document.c
|
84
106
|
- ext/nokogiri/html_document.h
|
@@ -108,6 +130,8 @@ files:
|
|
108
130
|
- ext/nokogiri/xml_element_content.h
|
109
131
|
- ext/nokogiri/xml_element_decl.c
|
110
132
|
- ext/nokogiri/xml_element_decl.h
|
133
|
+
- ext/nokogiri/xml_encoding_handler.c
|
134
|
+
- ext/nokogiri/xml_encoding_handler.h
|
111
135
|
- ext/nokogiri/xml_entity_decl.c
|
112
136
|
- ext/nokogiri/xml_entity_decl.h
|
113
137
|
- ext/nokogiri/xml_entity_reference.c
|
@@ -156,6 +180,7 @@ files:
|
|
156
180
|
- lib/nokogiri/css/tokenizer.rex
|
157
181
|
- lib/nokogiri/css/xpath_visitor.rb
|
158
182
|
- lib/nokogiri/decorators/slop.rb
|
183
|
+
- lib/nokogiri/ffi/encoding_handler.rb
|
159
184
|
- lib/nokogiri/ffi/html/document.rb
|
160
185
|
- lib/nokogiri/ffi/html/element_description.rb
|
161
186
|
- lib/nokogiri/ffi/html/entity_lookup.rb
|
@@ -169,6 +194,7 @@ files:
|
|
169
194
|
- lib/nokogiri/ffi/structs/xml_attr.rb
|
170
195
|
- lib/nokogiri/ffi/structs/xml_attribute.rb
|
171
196
|
- lib/nokogiri/ffi/structs/xml_buffer.rb
|
197
|
+
- lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb
|
172
198
|
- lib/nokogiri/ffi/structs/xml_document.rb
|
173
199
|
- lib/nokogiri/ffi/structs/xml_dtd.rb
|
174
200
|
- lib/nokogiri/ffi/structs/xml_element.rb
|
@@ -302,10 +328,11 @@ files:
|
|
302
328
|
- test/html/test_node_encoding.rb
|
303
329
|
- test/test_convert_xpath.rb
|
304
330
|
- test/test_css_cache.rb
|
305
|
-
- test/
|
331
|
+
- test/test_encoding_handler.rb
|
306
332
|
- test/test_memory_leak.rb
|
307
333
|
- test/test_nokogiri.rb
|
308
334
|
- test/test_reader.rb
|
335
|
+
- test/test_soap4r_sax.rb
|
309
336
|
- test/test_xslt_transforms.rb
|
310
337
|
- test/xml/node/test_save_options.rb
|
311
338
|
- test/xml/node/test_subclass.rb
|
@@ -330,6 +357,7 @@ files:
|
|
330
357
|
- test/xml/test_node.rb
|
331
358
|
- test/xml/test_node_attributes.rb
|
332
359
|
- test/xml/test_node_encoding.rb
|
360
|
+
- test/xml/test_node_reparenting.rb
|
333
361
|
- test/xml/test_node_set.rb
|
334
362
|
- test/xml/test_parse_options.rb
|
335
363
|
- test/xml/test_processing_instruction.rb
|
@@ -388,10 +416,11 @@ test_files:
|
|
388
416
|
- test/html/test_node_encoding.rb
|
389
417
|
- test/test_convert_xpath.rb
|
390
418
|
- test/test_css_cache.rb
|
391
|
-
- test/
|
419
|
+
- test/test_encoding_handler.rb
|
392
420
|
- test/test_memory_leak.rb
|
393
421
|
- test/test_nokogiri.rb
|
394
422
|
- test/test_reader.rb
|
423
|
+
- test/test_soap4r_sax.rb
|
395
424
|
- test/test_xslt_transforms.rb
|
396
425
|
- test/xml/node/test_save_options.rb
|
397
426
|
- test/xml/node/test_subclass.rb
|
@@ -416,6 +445,7 @@ test_files:
|
|
416
445
|
- test/xml/test_node.rb
|
417
446
|
- test/xml/test_node_attributes.rb
|
418
447
|
- test/xml/test_node_encoding.rb
|
448
|
+
- test/xml/test_node_reparenting.rb
|
419
449
|
- test/xml/test_node_set.rb
|
420
450
|
- test/xml/test_parse_options.rb
|
421
451
|
- test/xml/test_processing_instruction.rb
|