nokogiri 1.6.8.rc1-x86-mingw32 → 1.6.8.rc2-x86-mingw32
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/.cross_rubies +2 -0
- data/CHANGELOG.rdoc +16 -2
- data/Gemfile +2 -2
- data/LICENSE.txt +1 -1
- data/Manifest.txt +0 -1
- data/Rakefile +5 -3
- data/ext/nokogiri/extconf.rb +1 -2
- data/ext/nokogiri/html_document.c +6 -6
- data/ext/nokogiri/html_element_description.c +1 -1
- data/ext/nokogiri/html_entity_lookup.c +1 -1
- data/ext/nokogiri/html_sax_parser_context.c +4 -4
- data/ext/nokogiri/html_sax_push_parser.c +2 -2
- data/ext/nokogiri/xml_attr.c +2 -2
- data/ext/nokogiri/xml_comment.c +1 -1
- data/ext/nokogiri/xml_document.c +18 -18
- data/ext/nokogiri/xml_encoding_handler.c +3 -3
- data/ext/nokogiri/xml_entity_reference.c +1 -1
- data/ext/nokogiri/xml_node.c +27 -27
- data/ext/nokogiri/xml_node_set.c +3 -11
- data/ext/nokogiri/xml_processing_instruction.c +2 -2
- data/ext/nokogiri/xml_reader.c +6 -6
- data/ext/nokogiri/xml_sax_parser_context.c +1 -1
- data/ext/nokogiri/xml_sax_push_parser.c +1 -1
- data/ext/nokogiri/xml_schema.c +1 -1
- data/ext/nokogiri/xml_text.c +1 -1
- data/ext/nokogiri/xml_xpath_context.c +6 -6
- data/ext/nokogiri/xslt_stylesheet.c +6 -6
- data/lib/nokogiri/1.9/nokogiri.so +0 -0
- data/lib/nokogiri/2.0/nokogiri.so +0 -0
- data/lib/nokogiri/2.1/nokogiri.so +0 -0
- data/lib/nokogiri/2.2/nokogiri.so +0 -0
- data/lib/nokogiri/2.3/nokogiri.so +0 -0
- data/lib/nokogiri/version.rb +1 -1
- data/lib/nokogiri/xml/node.rb +5 -9
- data/lib/nokogiri/xml/node_set.rb +3 -3
- data/test/html/test_document.rb +3 -3
- data/test/html/test_document_encoding.rb +4 -4
- data/test/html/test_node_encoding.rb +60 -0
- data/test/test_css_cache.rb +1 -1
- data/test/test_reader.rb +19 -19
- data/test/xml/sax/test_parser.rb +3 -7
- data/test/xml/test_document_encoding.rb +3 -3
- data/test/xml/test_namespace.rb +2 -2
- data/test/xml/test_node.rb +4 -4
- data/test/xml/test_node_encoding.rb +33 -69
- data/test/xml/test_node_set.rb +1 -1
- data/test/xml/test_unparented_node.rb +1 -1
- data/test_all +15 -9
- metadata +13 -12
- data/CHANGELOG.ja.rdoc +0 -1075
data/ext/nokogiri/xml_node_set.c
CHANGED
@@ -321,25 +321,17 @@ static VALUE slice(int argc, VALUE *argv, VALUE self)
|
|
321
321
|
static VALUE to_array(VALUE self, VALUE rb_node)
|
322
322
|
{
|
323
323
|
xmlNodeSetPtr node_set ;
|
324
|
-
VALUE *elts;
|
325
324
|
VALUE list;
|
326
325
|
int i;
|
327
326
|
|
328
327
|
Data_Get_Struct(self, xmlNodeSet, node_set);
|
329
328
|
|
330
|
-
|
329
|
+
list = rb_ary_new2(node_set->nodeNr);
|
331
330
|
for(i = 0; i < node_set->nodeNr; i++) {
|
332
|
-
|
333
|
-
|
331
|
+
VALUE elt = Nokogiri_wrap_xml_node_set_node(node_set->nodeTab[i], self);
|
332
|
+
rb_ary_push( list, elt );
|
334
333
|
}
|
335
334
|
|
336
|
-
list = rb_ary_new4((long)node_set->nodeNr, elts);
|
337
|
-
|
338
|
-
for(i = 0; i < node_set->nodeNr; i++) {
|
339
|
-
rb_gc_unregister_address(&elts[i]);
|
340
|
-
}
|
341
|
-
free(elts);
|
342
|
-
|
343
335
|
return list;
|
344
336
|
}
|
345
337
|
|
@@ -23,8 +23,8 @@ static VALUE new(int argc, VALUE *argv, VALUE klass)
|
|
23
23
|
|
24
24
|
node = xmlNewDocPI(
|
25
25
|
xml_doc,
|
26
|
-
(const xmlChar *)
|
27
|
-
(const xmlChar *)
|
26
|
+
(const xmlChar *)StringValueCStr(name),
|
27
|
+
(const xmlChar *)StringValueCStr(content)
|
28
28
|
);
|
29
29
|
|
30
30
|
nokogiri_root_node(node);
|
data/ext/nokogiri/xml_reader.c
CHANGED
@@ -218,12 +218,12 @@ static VALUE reader_attribute(VALUE self, VALUE name)
|
|
218
218
|
if(NIL_P(name)) return Qnil;
|
219
219
|
name = StringValue(name) ;
|
220
220
|
|
221
|
-
value = xmlTextReaderGetAttribute(reader, (xmlChar*)
|
221
|
+
value = xmlTextReaderGetAttribute(reader, (xmlChar*)StringValueCStr(name));
|
222
222
|
if(value == NULL) {
|
223
223
|
/* this section is an attempt to workaround older versions of libxml that
|
224
224
|
don't handle namespaces properly in all attribute-and-friends functions */
|
225
225
|
xmlChar *prefix = NULL ;
|
226
|
-
xmlChar *localname = xmlSplitQName2((xmlChar*)
|
226
|
+
xmlChar *localname = xmlSplitQName2((xmlChar*)StringValueCStr(name), &prefix);
|
227
227
|
if (localname != NULL) {
|
228
228
|
value = xmlTextReaderLookupNamespace(reader, localname);
|
229
229
|
xmlFree(localname) ;
|
@@ -546,8 +546,8 @@ static VALUE from_memory(int argc, VALUE *argv, VALUE klass)
|
|
546
546
|
rb_scan_args(argc, argv, "13", &rb_buffer, &rb_url, &encoding, &rb_options);
|
547
547
|
|
548
548
|
if (!RTEST(rb_buffer)) rb_raise(rb_eArgError, "string cannot be nil");
|
549
|
-
if (RTEST(rb_url)) c_url =
|
550
|
-
if (RTEST(encoding)) c_encoding =
|
549
|
+
if (RTEST(rb_url)) c_url = StringValueCStr(rb_url);
|
550
|
+
if (RTEST(encoding)) c_encoding = StringValueCStr(encoding);
|
551
551
|
if (RTEST(rb_options)) c_options = (int)NUM2INT(rb_options);
|
552
552
|
|
553
553
|
reader = xmlReaderForMemory(
|
@@ -590,8 +590,8 @@ static VALUE from_io(int argc, VALUE *argv, VALUE klass)
|
|
590
590
|
rb_scan_args(argc, argv, "13", &rb_io, &rb_url, &encoding, &rb_options);
|
591
591
|
|
592
592
|
if (!RTEST(rb_io)) rb_raise(rb_eArgError, "io cannot be nil");
|
593
|
-
if (RTEST(rb_url)) c_url =
|
594
|
-
if (RTEST(encoding)) c_encoding =
|
593
|
+
if (RTEST(rb_url)) c_url = StringValueCStr(rb_url);
|
594
|
+
if (RTEST(encoding)) c_encoding = StringValueCStr(encoding);
|
595
595
|
if (RTEST(rb_options)) c_options = (int)NUM2INT(rb_options);
|
596
596
|
|
597
597
|
reader = xmlReaderForIO(
|
@@ -45,7 +45,7 @@ parse_io(VALUE klass, VALUE io, VALUE encoding)
|
|
45
45
|
*/
|
46
46
|
static VALUE parse_file(VALUE klass, VALUE filename)
|
47
47
|
{
|
48
|
-
xmlParserCtxtPtr ctxt = xmlCreateFileParserCtxt(
|
48
|
+
xmlParserCtxtPtr ctxt = xmlCreateFileParserCtxt(StringValueCStr(filename));
|
49
49
|
return Data_Wrap_Struct(klass, NULL, deallocate, ctxt);
|
50
50
|
}
|
51
51
|
|
@@ -59,7 +59,7 @@ static VALUE initialize_native(VALUE self, VALUE _xml_sax, VALUE _filename)
|
|
59
59
|
|
60
60
|
Data_Get_Struct(_xml_sax, xmlSAXHandler, sax);
|
61
61
|
|
62
|
-
if(_filename != Qnil) filename =
|
62
|
+
if(_filename != Qnil) filename = StringValueCStr(_filename);
|
63
63
|
|
64
64
|
ctx = xmlCreatePushParserCtxt(
|
65
65
|
sax,
|
data/ext/nokogiri/xml_schema.c
CHANGED
@@ -61,7 +61,7 @@ static VALUE validate_file(VALUE self, VALUE rb_filename)
|
|
61
61
|
VALUE errors;
|
62
62
|
|
63
63
|
Data_Get_Struct(self, xmlSchema, schema);
|
64
|
-
filename = (const char*)
|
64
|
+
filename = (const char*)StringValueCStr(rb_filename) ;
|
65
65
|
|
66
66
|
errors = rb_ary_new();
|
67
67
|
|
data/ext/nokogiri/xml_text.c
CHANGED
@@ -19,7 +19,7 @@ static VALUE new(int argc, VALUE *argv, VALUE klass)
|
|
19
19
|
|
20
20
|
Data_Get_Struct(document, xmlDoc, doc);
|
21
21
|
|
22
|
-
node = xmlNewText((xmlChar *)
|
22
|
+
node = xmlNewText((xmlChar *)StringValueCStr(string));
|
23
23
|
node->doc = doc->doc;
|
24
24
|
|
25
25
|
nokogiri_root_node(node);
|
@@ -21,8 +21,8 @@ static VALUE register_ns(VALUE self, VALUE prefix, VALUE uri)
|
|
21
21
|
Data_Get_Struct(self, xmlXPathContext, ctx);
|
22
22
|
|
23
23
|
xmlXPathRegisterNs( ctx,
|
24
|
-
(const xmlChar *)
|
25
|
-
(const xmlChar *)
|
24
|
+
(const xmlChar *)StringValueCStr(prefix),
|
25
|
+
(const xmlChar *)StringValueCStr(uri)
|
26
26
|
);
|
27
27
|
return self;
|
28
28
|
}
|
@@ -39,10 +39,10 @@ static VALUE register_variable(VALUE self, VALUE name, VALUE value)
|
|
39
39
|
xmlXPathObjectPtr xmlValue;
|
40
40
|
Data_Get_Struct(self, xmlXPathContext, ctx);
|
41
41
|
|
42
|
-
xmlValue = xmlXPathNewCString(
|
42
|
+
xmlValue = xmlXPathNewCString(StringValueCStr(value));
|
43
43
|
|
44
44
|
xmlXPathRegisterVariable( ctx,
|
45
|
-
(const xmlChar *)
|
45
|
+
(const xmlChar *)StringValueCStr(name),
|
46
46
|
xmlValue
|
47
47
|
);
|
48
48
|
|
@@ -108,7 +108,7 @@ void Nokogiri_marshal_xpath_funcall_and_return_values(xmlXPathParserContextPtr c
|
|
108
108
|
case T_STRING:
|
109
109
|
xmlXPathReturnString(
|
110
110
|
ctx,
|
111
|
-
xmlCharStrdup(
|
111
|
+
xmlCharStrdup(StringValueCStr(result))
|
112
112
|
);
|
113
113
|
break;
|
114
114
|
case T_TRUE:
|
@@ -200,7 +200,7 @@ static VALUE evaluate(int argc, VALUE *argv, VALUE self)
|
|
200
200
|
if(rb_scan_args(argc, argv, "11", &search_path, &xpath_handler) == 1)
|
201
201
|
xpath_handler = Qnil;
|
202
202
|
|
203
|
-
query = (xmlChar *)
|
203
|
+
query = (xmlChar *)StringValueCStr(search_path);
|
204
204
|
|
205
205
|
if(Qnil != xpath_handler) {
|
206
206
|
/* FIXME: not sure if this is the correct place to shove private data. */
|
@@ -22,7 +22,7 @@ static void dealloc(nokogiriXsltStylesheetTuple *wrapper)
|
|
22
22
|
NOKOGIRI_DEBUG_START(doc);
|
23
23
|
xsltFreeStylesheet(doc); /* commented out for now. */
|
24
24
|
NOKOGIRI_DEBUG_END(doc);
|
25
|
-
|
25
|
+
|
26
26
|
free(wrapper);
|
27
27
|
}
|
28
28
|
|
@@ -47,7 +47,7 @@ VALUE Nokogiri_wrap_xslt_stylesheet(xsltStylesheetPtr ss)
|
|
47
47
|
|
48
48
|
self = Data_Make_Struct(cNokogiriXsltStylesheet, nokogiriXsltStylesheetTuple,
|
49
49
|
mark, dealloc, wrapper);
|
50
|
-
|
50
|
+
|
51
51
|
ss->_private = (void *)self;
|
52
52
|
wrapper->ss = ss;
|
53
53
|
wrapper->func_instances = rb_ary_new();
|
@@ -122,7 +122,7 @@ static void swallow_superfluous_xml_errors(void * userdata, xmlErrorPtr error, .
|
|
122
122
|
* returns Nokogiri::XML::Document
|
123
123
|
*
|
124
124
|
* Example:
|
125
|
-
*
|
125
|
+
*
|
126
126
|
* doc = Nokogiri::XML(File.read(ARGV[0]))
|
127
127
|
* xslt = Nokogiri::XSLT(File.read(ARGV[1]))
|
128
128
|
* puts xslt.transform(doc, ['key', 'value'])
|
@@ -158,7 +158,7 @@ static VALUE transform(int argc, VALUE* argv, VALUE self)
|
|
158
158
|
params = calloc((size_t)param_len+1, sizeof(char*));
|
159
159
|
for (j = 0 ; j < param_len ; j++) {
|
160
160
|
VALUE entry = rb_ary_entry(paramobj, j);
|
161
|
-
const char * ptr =
|
161
|
+
const char * ptr = StringValueCStr(entry);
|
162
162
|
params[j] = ptr;
|
163
163
|
}
|
164
164
|
params[param_len] = 0 ;
|
@@ -211,7 +211,7 @@ static void * initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
|
|
211
211
|
for(i = 0; i < RARRAY_LEN(methods); i++) {
|
212
212
|
VALUE method_name = rb_obj_as_string(rb_ary_entry(methods, i));
|
213
213
|
xsltRegisterExtFunction(ctxt,
|
214
|
-
(unsigned char *)
|
214
|
+
(unsigned char *)StringValueCStr(method_name), uri, method_caller);
|
215
215
|
}
|
216
216
|
|
217
217
|
Data_Get_Struct(ctxt->style->_private, nokogiriXsltStylesheetTuple,
|
@@ -245,7 +245,7 @@ static VALUE registr(VALUE self, VALUE uri, VALUE obj)
|
|
245
245
|
if(NIL_P(modules)) rb_raise(rb_eRuntimeError, "wtf! @modules isn't set");
|
246
246
|
|
247
247
|
rb_hash_aset(modules, uri, obj);
|
248
|
-
xsltRegisterExtModule((unsigned char *)
|
248
|
+
xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
|
249
249
|
return self;
|
250
250
|
}
|
251
251
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/nokogiri/version.rb
CHANGED
data/lib/nokogiri/xml/node.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'stringio'
|
2
3
|
require 'nokogiri/xml/node/save_options'
|
3
4
|
|
@@ -331,13 +332,13 @@ module Nokogiri
|
|
331
332
|
###
|
332
333
|
# Get the attribute values for this Node.
|
333
334
|
def values
|
334
|
-
attribute_nodes.map
|
335
|
+
attribute_nodes.map(&:value)
|
335
336
|
end
|
336
337
|
|
337
338
|
###
|
338
339
|
# Get the attribute names for this Node.
|
339
340
|
def keys
|
340
|
-
attribute_nodes.map
|
341
|
+
attribute_nodes.map(&:node_name)
|
341
342
|
end
|
342
343
|
|
343
344
|
###
|
@@ -439,12 +440,6 @@ module Nokogiri
|
|
439
440
|
def namespaces
|
440
441
|
Hash[namespace_scopes.map { |nd|
|
441
442
|
key = ['xmlns', nd.prefix].compact.join(':')
|
442
|
-
if document.encoding
|
443
|
-
begin
|
444
|
-
key.force_encoding document.encoding
|
445
|
-
rescue ArgumentError
|
446
|
-
end
|
447
|
-
end
|
448
443
|
[key, nd.href]
|
449
444
|
}]
|
450
445
|
end
|
@@ -546,9 +541,10 @@ module Nokogiri
|
|
546
541
|
return NodeSet.new(document, parents) unless selector
|
547
542
|
|
548
543
|
root = parents.last
|
544
|
+
search_results = root.search(selector)
|
549
545
|
|
550
546
|
NodeSet.new(document, parents.find_all { |parent|
|
551
|
-
|
547
|
+
search_results.include?(parent)
|
552
548
|
})
|
553
549
|
end
|
554
550
|
|
@@ -191,7 +191,7 @@ module Nokogiri
|
|
191
191
|
###
|
192
192
|
# Get the inner text of all contained Node objects
|
193
193
|
def inner_text
|
194
|
-
collect
|
194
|
+
collect(&:inner_text).join('')
|
195
195
|
end
|
196
196
|
alias :text :inner_text
|
197
197
|
|
@@ -215,7 +215,7 @@ module Nokogiri
|
|
215
215
|
###
|
216
216
|
# Convert this NodeSet to a string.
|
217
217
|
def to_s
|
218
|
-
map
|
218
|
+
map(&:to_s).join
|
219
219
|
end
|
220
220
|
|
221
221
|
###
|
@@ -296,7 +296,7 @@ module Nokogiri
|
|
296
296
|
###
|
297
297
|
# Return a nicely formated string representation
|
298
298
|
def inspect
|
299
|
-
"[#{map
|
299
|
+
"[#{map(&:inspect).join ', '}]"
|
300
300
|
end
|
301
301
|
|
302
302
|
alias :+ :|
|
data/test/html/test_document.rb
CHANGED
@@ -97,7 +97,7 @@ module Nokogiri
|
|
97
97
|
rescue Exception => e
|
98
98
|
skip("This test needs the internet. Skips if no internet available. (#{e})")
|
99
99
|
end
|
100
|
-
doc = Nokogiri::HTML html ,"http:/foobar.foobar/"
|
100
|
+
doc = Nokogiri::HTML html ,"http:/foobar.foobar/", 'UTF-8'
|
101
101
|
refute_empty doc.to_s, "Document should not be empty"
|
102
102
|
end
|
103
103
|
|
@@ -422,7 +422,7 @@ eohtml
|
|
422
422
|
eohtml
|
423
423
|
set = html.css('p, a')
|
424
424
|
assert_equal(2, set.length)
|
425
|
-
assert_equal ['a tag', 'p tag'].sort, set.map
|
425
|
+
assert_equal ['a tag', 'p tag'].sort, set.map(&:content).sort
|
426
426
|
end
|
427
427
|
|
428
428
|
def test_inner_text
|
@@ -600,7 +600,7 @@ eohtml
|
|
600
600
|
eohtml
|
601
601
|
list = doc.css('.red')
|
602
602
|
assert_equal 2, list.length
|
603
|
-
assert_equal %w{ RED RED }, list.map
|
603
|
+
assert_equal %w{ RED RED }, list.map(&:text)
|
604
604
|
end
|
605
605
|
|
606
606
|
def test_parse_can_take_io
|
@@ -107,16 +107,16 @@ module Nokogiri
|
|
107
107
|
def test_document_xhtml_enc
|
108
108
|
[ENCODING_XHTML_FILE, ENCODING_HTML_FILE].each { |file|
|
109
109
|
doc_from_string_enc = Nokogiri::HTML(binread(file), nil, 'Shift_JIS')
|
110
|
-
ary_from_string_enc = doc_from_string_enc.xpath('//p/text()').map
|
110
|
+
ary_from_string_enc = doc_from_string_enc.xpath('//p/text()').map(&:text)
|
111
111
|
|
112
112
|
doc_from_string = Nokogiri::HTML(binread(file))
|
113
|
-
ary_from_string = doc_from_string.xpath('//p/text()').map
|
113
|
+
ary_from_string = doc_from_string.xpath('//p/text()').map(&:text)
|
114
114
|
|
115
115
|
doc_from_file_enc = Nokogiri::HTML(binopen(file), nil, 'Shift_JIS')
|
116
|
-
ary_from_file_enc = doc_from_file_enc.xpath('//p/text()').map
|
116
|
+
ary_from_file_enc = doc_from_file_enc.xpath('//p/text()').map(&:text)
|
117
117
|
|
118
118
|
doc_from_file = Nokogiri::HTML(binopen(file))
|
119
|
-
ary_from_file = doc_from_file.xpath('//p/text()').map
|
119
|
+
ary_from_file = doc_from_file.xpath('//p/text()').map(&:text)
|
120
120
|
|
121
121
|
title = 'たこ焼き仮面'
|
122
122
|
|
@@ -4,6 +4,48 @@ require "helper"
|
|
4
4
|
module Nokogiri
|
5
5
|
module HTML
|
6
6
|
class TestNodeEncoding < Nokogiri::TestCase
|
7
|
+
def setup
|
8
|
+
super
|
9
|
+
@html = Nokogiri::HTML(File.open(NICH_FILE, "rb"))
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_get_attribute
|
13
|
+
node = @html.css('a').first
|
14
|
+
assert_equal 'UTF-8', node['href'].encoding.name
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_text_encoding_is_utf_8
|
18
|
+
assert_equal 'UTF-8', @html.text.encoding.name
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_serialize_encoding_html
|
22
|
+
assert_equal @html.encoding.downcase,
|
23
|
+
@html.serialize.encoding.name.downcase
|
24
|
+
|
25
|
+
@doc = Nokogiri::HTML(@html.serialize)
|
26
|
+
assert_equal @html.serialize, @doc.serialize
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_encode_special_chars
|
30
|
+
foo = @html.css('a').first.encode_special_chars('foo')
|
31
|
+
assert_equal 'UTF-8', foo.encoding.name
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_content
|
35
|
+
node = @html.css('a').first
|
36
|
+
assert_equal 'UTF-8', node.content.encoding.name
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_name
|
40
|
+
node = @html.css('a').first
|
41
|
+
assert_equal 'UTF-8', node.name.encoding.name
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_path
|
45
|
+
node = @html.css('a').first
|
46
|
+
assert_equal 'UTF-8', node.path.encoding.name
|
47
|
+
end
|
48
|
+
|
7
49
|
def test_inner_html
|
8
50
|
doc = Nokogiri::HTML File.open(SHIFT_JIS_HTML, 'rb')
|
9
51
|
|
@@ -20,6 +62,24 @@ module Nokogiri
|
|
20
62
|
contents = doc.at('h2').inner_html
|
21
63
|
assert_match hello, contents
|
22
64
|
end
|
65
|
+
|
66
|
+
def test_encoding_GH_1113
|
67
|
+
doc = Nokogiri::HTML::Document.new
|
68
|
+
hex = '<p>🍀</p>'
|
69
|
+
decimal = '<p>🍀</p>'
|
70
|
+
encoded = '<p>🍀</p>'
|
71
|
+
|
72
|
+
doc.encoding = 'UTF-8'
|
73
|
+
[hex, decimal, encoded].each do |document|
|
74
|
+
assert_equal encoded, doc.fragment(document).to_s
|
75
|
+
end
|
76
|
+
|
77
|
+
doc.encoding = 'US-ASCII'
|
78
|
+
expected = Nokogiri.jruby? ? hex : decimal
|
79
|
+
[hex, decimal].each do |document|
|
80
|
+
assert_equal expected, doc.fragment(document).to_s
|
81
|
+
end
|
82
|
+
end
|
23
83
|
end
|
24
84
|
end
|
25
85
|
end
|
data/test/test_css_cache.rb
CHANGED
@@ -6,7 +6,7 @@ class TestCssCache < Nokogiri::TestCase
|
|
6
6
|
super
|
7
7
|
@css = "a1 > b2 > c3"
|
8
8
|
@parse_result = Nokogiri::CSS.parse(@css)
|
9
|
-
@to_xpath_result = @parse_result.map
|
9
|
+
@to_xpath_result = @parse_result.map(&:to_xpath)
|
10
10
|
Nokogiri::CSS::Parser.class_eval do
|
11
11
|
class << @cache
|
12
12
|
alias :old_bracket :[]
|
data/test/test_reader.rb
CHANGED
@@ -85,7 +85,7 @@ class TestReader < Nokogiri::TestCase
|
|
85
85
|
reader = Nokogiri::XML::Reader.from_io(io)
|
86
86
|
assert_equal false, reader.default?
|
87
87
|
assert_equal [false, false, false, false, false, false, false],
|
88
|
-
reader.map
|
88
|
+
reader.map(&:default?)
|
89
89
|
end
|
90
90
|
|
91
91
|
def test_io
|
@@ -93,7 +93,7 @@ class TestReader < Nokogiri::TestCase
|
|
93
93
|
reader = Nokogiri::XML::Reader(io)
|
94
94
|
assert_equal false, reader.default?
|
95
95
|
assert_equal [false, false, false, false, false, false, false],
|
96
|
-
reader.map
|
96
|
+
reader.map(&:default?)
|
97
97
|
end
|
98
98
|
|
99
99
|
def test_string_io
|
@@ -105,7 +105,7 @@ class TestReader < Nokogiri::TestCase
|
|
105
105
|
reader = Nokogiri::XML::Reader(io)
|
106
106
|
assert_equal false, reader.default?
|
107
107
|
assert_equal [false, false, false, false, false, false, false],
|
108
|
-
reader.map
|
108
|
+
reader.map(&:default?)
|
109
109
|
end
|
110
110
|
|
111
111
|
class ReallyBadIO
|
@@ -156,7 +156,7 @@ class TestReader < Nokogiri::TestCase
|
|
156
156
|
eoxml
|
157
157
|
assert_equal false, reader.default?
|
158
158
|
assert_equal [false, false, false, false, false, false, false],
|
159
|
-
reader.map
|
159
|
+
reader.map(&:default?)
|
160
160
|
end
|
161
161
|
|
162
162
|
def test_value?
|
@@ -167,7 +167,7 @@ class TestReader < Nokogiri::TestCase
|
|
167
167
|
eoxml
|
168
168
|
assert_equal false, reader.value?
|
169
169
|
assert_equal [false, true, false, true, false, true, false],
|
170
|
-
reader.map
|
170
|
+
reader.map(&:value?)
|
171
171
|
end
|
172
172
|
|
173
173
|
def test_read_error_document
|
@@ -191,7 +191,7 @@ class TestReader < Nokogiri::TestCase
|
|
191
191
|
eoxml
|
192
192
|
assert_equal false, reader.attributes?
|
193
193
|
assert_equal [true, false, true, false, true, false, true],
|
194
|
-
reader.map
|
194
|
+
reader.map(&:attributes?)
|
195
195
|
end
|
196
196
|
|
197
197
|
def test_attributes
|
@@ -208,7 +208,7 @@ class TestReader < Nokogiri::TestCase
|
|
208
208
|
{}, {"awesome"=>"true"}, {}, {"awesome"=>"true"}, {},
|
209
209
|
{'xmlns:tenderlove'=>'http://tenderlovemaking.com/',
|
210
210
|
'xmlns'=>'http://mothership.connection.com/'}],
|
211
|
-
reader.map
|
211
|
+
reader.map(&:attributes)
|
212
212
|
end
|
213
213
|
|
214
214
|
def test_attribute_roundtrip
|
@@ -257,7 +257,7 @@ class TestReader < Nokogiri::TestCase
|
|
257
257
|
</x>
|
258
258
|
eoxml
|
259
259
|
assert_equal 0, reader.attribute_count
|
260
|
-
assert_equal [1, 0, 1, 0, 0, 0, 0], reader.map
|
260
|
+
assert_equal [1, 0, 1, 0, 0, 0, 0], reader.map(&:attribute_count)
|
261
261
|
end
|
262
262
|
|
263
263
|
def test_depth
|
@@ -267,7 +267,7 @@ class TestReader < Nokogiri::TestCase
|
|
267
267
|
</x>
|
268
268
|
eoxml
|
269
269
|
assert_equal 0, reader.depth
|
270
|
-
assert_equal [0, 1, 1, 2, 1, 1, 0], reader.map
|
270
|
+
assert_equal [0, 1, 1, 2, 1, 1, 0], reader.map(&:depth)
|
271
271
|
end
|
272
272
|
|
273
273
|
def test_encoding
|
@@ -278,7 +278,7 @@ class TestReader < Nokogiri::TestCase
|
|
278
278
|
</awesome>
|
279
279
|
eoxml
|
280
280
|
reader = Nokogiri::XML::Reader.from_memory(string, nil, 'UTF-8')
|
281
|
-
assert_equal ['UTF-8'], reader.map
|
281
|
+
assert_equal ['UTF-8'], reader.map(&:encoding).uniq
|
282
282
|
end
|
283
283
|
|
284
284
|
def test_xml_version
|
@@ -288,7 +288,7 @@ class TestReader < Nokogiri::TestCase
|
|
288
288
|
</x>
|
289
289
|
eoxml
|
290
290
|
assert_nil reader.xml_version
|
291
|
-
assert_equal ['1.0'], reader.map
|
291
|
+
assert_equal ['1.0'], reader.map(&:xml_version).uniq
|
292
292
|
end
|
293
293
|
|
294
294
|
def test_lang
|
@@ -300,7 +300,7 @@ class TestReader < Nokogiri::TestCase
|
|
300
300
|
eoxml
|
301
301
|
assert_nil reader.lang
|
302
302
|
assert_equal [nil, nil, "en", "en", "en", nil, "ja", "ja", "ja", nil, nil],
|
303
|
-
reader.map
|
303
|
+
reader.map(&:lang)
|
304
304
|
end
|
305
305
|
|
306
306
|
def test_value
|
@@ -311,7 +311,7 @@ class TestReader < Nokogiri::TestCase
|
|
311
311
|
eoxml
|
312
312
|
assert_nil reader.value
|
313
313
|
assert_equal [nil, "\n ", nil, "snuggles!", nil, "\n ", nil],
|
314
|
-
reader.map
|
314
|
+
reader.map(&:value)
|
315
315
|
end
|
316
316
|
|
317
317
|
def test_prefix
|
@@ -322,7 +322,7 @@ class TestReader < Nokogiri::TestCase
|
|
322
322
|
eoxml
|
323
323
|
assert_nil reader.prefix
|
324
324
|
assert_equal [nil, nil, "edi", nil, "edi", nil, nil],
|
325
|
-
reader.map
|
325
|
+
reader.map(&:prefix)
|
326
326
|
end
|
327
327
|
|
328
328
|
def test_node_type
|
@@ -332,7 +332,7 @@ class TestReader < Nokogiri::TestCase
|
|
332
332
|
</x>
|
333
333
|
eoxml
|
334
334
|
assert_equal 0, reader.node_type
|
335
|
-
assert_equal [1, 14, 1, 3, 15, 14, 15], reader.map
|
335
|
+
assert_equal [1, 14, 1, 3, 15, 14, 15], reader.map(&:node_type)
|
336
336
|
end
|
337
337
|
|
338
338
|
def test_inner_xml
|
@@ -383,7 +383,7 @@ class TestReader < Nokogiri::TestCase
|
|
383
383
|
"http://ecommerce.example.org/schema",
|
384
384
|
nil,
|
385
385
|
nil],
|
386
|
-
reader.map
|
386
|
+
reader.map(&:namespace_uri))
|
387
387
|
end
|
388
388
|
|
389
389
|
def test_namespaced_attributes
|
@@ -413,7 +413,7 @@ class TestReader < Nokogiri::TestCase
|
|
413
413
|
eoxml
|
414
414
|
assert_nil reader.local_name
|
415
415
|
assert_equal(["x", "#text", "foo", "#text", "foo", "#text", "x"],
|
416
|
-
reader.map
|
416
|
+
reader.map(&:local_name))
|
417
417
|
end
|
418
418
|
|
419
419
|
def test_name
|
@@ -424,7 +424,7 @@ class TestReader < Nokogiri::TestCase
|
|
424
424
|
eoxml
|
425
425
|
assert_nil reader.name
|
426
426
|
assert_equal(["x", "#text", "edi:foo", "#text", "edi:foo", "#text", "x"],
|
427
|
-
reader.map
|
427
|
+
reader.map(&:name))
|
428
428
|
end
|
429
429
|
|
430
430
|
def test_base_uri
|
@@ -452,7 +452,7 @@ class TestReader < Nokogiri::TestCase
|
|
452
452
|
"http://base.example.org/base/relative",
|
453
453
|
"http://base.example.org/base/",
|
454
454
|
"http://base.example.org/base/"],
|
455
|
-
reader.map
|
455
|
+
reader.map(&:base_uri))
|
456
456
|
end
|
457
457
|
|
458
458
|
def test_xlink_href_without_base_uri
|