nokogiri 1.6.1-x86-mingw32 → 1.6.2.rc1-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 +7 -7
- data/.editorconfig +17 -0
- data/.travis.yml +4 -6
- data/CHANGELOG.ja.rdoc +37 -8
- data/CHANGELOG.rdoc +48 -3
- data/Gemfile +3 -3
- data/Manifest.txt +57 -1
- data/README.ja.rdoc +22 -16
- data/README.rdoc +24 -19
- data/ROADMAP.md +1 -2
- data/Rakefile +161 -58
- data/build_all +56 -31
- data/dependencies.yml +3 -3
- data/ext/nokogiri/extconf.rb +379 -121
- data/ext/nokogiri/html_document.c +2 -2
- data/ext/nokogiri/nokogiri.c +6 -1
- data/ext/nokogiri/xml_document.c +5 -4
- data/ext/nokogiri/xml_node.c +11 -4
- data/ext/nokogiri/xml_reader.c +1 -1
- data/ext/nokogiri/xml_sax_parser_context.c +40 -0
- data/ext/nokogiri/xml_syntax_error.c +10 -5
- data/ext/nokogiri/xml_syntax_error.h +1 -1
- data/ext/nokogiri/xml_xpath_context.c +2 -14
- data/ext/nokogiri/xslt_stylesheet.c +1 -1
- data/lib/nokogiri.rb +31 -22
- 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/css/node.rb +0 -50
- data/lib/nokogiri/css/parser.rb +213 -218
- data/lib/nokogiri/css/parser.y +21 -30
- data/lib/nokogiri/css/xpath_visitor.rb +62 -14
- data/lib/nokogiri/html/document.rb +97 -18
- data/lib/nokogiri/html/sax/parser.rb +2 -2
- data/lib/nokogiri/version.rb +1 -1
- data/lib/nokogiri/xml/builder.rb +1 -1
- data/lib/nokogiri/xml/document.rb +2 -2
- data/lib/nokogiri/xml/dtd.rb +10 -0
- data/lib/nokogiri/xml/node.rb +26 -1
- data/lib/nokogiri/xml/sax/parser.rb +1 -1
- data/suppressions/README.txt +1 -0
- data/suppressions/nokogiri_ree-1.8.7.358.supp +61 -0
- data/suppressions/nokogiri_ruby-1.8.7.370.supp +0 -0
- data/suppressions/nokogiri_ruby-1.9.2.320.supp +28 -0
- data/suppressions/nokogiri_ruby-1.9.3.327.supp +28 -0
- data/test/css/test_nthiness.rb +65 -2
- data/test/css/test_parser.rb +27 -10
- data/test/css/test_tokenizer.rb +1 -1
- data/test/css/test_xpath_visitor.rb +6 -1
- data/test/files/atom.xml +344 -0
- data/test/files/shift_jis_no_charset.html +9 -0
- data/test/helper.rb +10 -0
- data/test/html/test_document.rb +74 -7
- data/test/html/test_document_encoding.rb +10 -0
- data/test/html/test_document_fragment.rb +3 -3
- data/test/namespaces/test_namespaces_in_cloned_doc.rb +31 -0
- data/test/test_nokogiri.rb +6 -0
- data/test/test_reader.rb +7 -4
- data/test/test_xslt_transforms.rb +25 -0
- data/test/xml/sax/test_parser.rb +16 -0
- data/test/xml/sax/test_parser_context.rb +9 -0
- data/test/xml/test_builder.rb +9 -0
- data/test/xml/test_c14n.rb +12 -2
- data/test/xml/test_document.rb +66 -0
- data/test/xml/test_document_fragment.rb +5 -0
- data/test/xml/test_dtd.rb +84 -0
- data/test/xml/test_entity_reference.rb +3 -3
- data/test/xml/test_node.rb +21 -3
- data/test/xml/test_node_attributes.rb +17 -0
- data/test/xml/test_schema.rb +26 -0
- data/test/xml/test_xpath.rb +81 -0
- metadata +235 -176
- data/lib/nokogiri/nokogiri.rb +0 -1
- data/tasks/cross_compile.rb +0 -134
data/lib/nokogiri/xml/node.rb
CHANGED
@@ -277,6 +277,23 @@ module Nokogiri
|
|
277
277
|
node_or_tags
|
278
278
|
end
|
279
279
|
|
280
|
+
###
|
281
|
+
# Add +node_or_tags+ as the first child of this Node.
|
282
|
+
# +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
|
283
|
+
#
|
284
|
+
# Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string).
|
285
|
+
#
|
286
|
+
# Also see related method +add_child+.
|
287
|
+
def prepend_child node_or_tags
|
288
|
+
if first = children.first
|
289
|
+
# Mimic the error add_child would raise.
|
290
|
+
raise RuntimeError, "Document already has a root node" if is_a?(XML::Document) && !node_or_tags.is_a?(XML::ProcessingInstruction)
|
291
|
+
first.__send__(:add_sibling, :previous, node_or_tags)
|
292
|
+
else
|
293
|
+
add_child(node_or_tags)
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
280
297
|
###
|
281
298
|
# Add +node_or_tags+ as a child of this Node.
|
282
299
|
# +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup.
|
@@ -491,6 +508,15 @@ module Nokogiri
|
|
491
508
|
# *this* node. Returns a XML::NodeSet containing the nodes parsed from
|
492
509
|
# +string_or_io+.
|
493
510
|
def parse string_or_io, options = nil
|
511
|
+
##
|
512
|
+
# When the current node is unparented and not an element node, use the
|
513
|
+
# document as the parsing context instead. Otherwise, the in-context
|
514
|
+
# parser cannot find an element or a document node.
|
515
|
+
# Document Fragments are also not usable by the in-context parser.
|
516
|
+
if !element? && !xml? && (!parent || parent.fragment?)
|
517
|
+
return document.parse(string_or_io, options)
|
518
|
+
end
|
519
|
+
|
494
520
|
options ||= (document.html? ? ParseOptions::DEFAULT_HTML : ParseOptions::DEFAULT_XML)
|
495
521
|
if Fixnum === options
|
496
522
|
options = Nokogiri::XML::ParseOptions.new(options)
|
@@ -882,7 +908,6 @@ module Nokogiri
|
|
882
908
|
# FIXME: this is a hack around broken libxml versions
|
883
909
|
return dump_html if Nokogiri.uses_libxml? && %w[2 6] === LIBXML_VERSION.split('.')[0..1]
|
884
910
|
|
885
|
-
options[:save_with] |= save_option if options[:save_with]
|
886
911
|
options[:save_with] = save_option unless options[:save_with]
|
887
912
|
serialize(options)
|
888
913
|
end
|
@@ -99,7 +99,7 @@ module Nokogiri
|
|
99
99
|
# Parse a file with +filename+
|
100
100
|
def parse_file filename
|
101
101
|
raise ArgumentError unless filename
|
102
|
-
raise Errno::ENOENT unless File.
|
102
|
+
raise Errno::ENOENT unless File.exist?(filename)
|
103
103
|
raise Errno::EISDIR if File.directory?(filename)
|
104
104
|
ctx = ParserContext.file filename
|
105
105
|
yield ctx if block_given?
|
@@ -0,0 +1 @@
|
|
1
|
+
This directory contains valgrind suppression files generated by the hoe-debugging gem.
|
@@ -0,0 +1,61 @@
|
|
1
|
+
{
|
2
|
+
<insert_a_suppression_name_here>
|
3
|
+
Memcheck:Addr8
|
4
|
+
fun:garbage_collect
|
5
|
+
fun:rb_newobj
|
6
|
+
fun:rb_node_newnode
|
7
|
+
fun:ruby_yyparse
|
8
|
+
fun:yycompile
|
9
|
+
fun:load_file
|
10
|
+
fun:rb_load
|
11
|
+
fun:rb_require_safe
|
12
|
+
fun:rb_call0
|
13
|
+
fun:rb_call
|
14
|
+
fun:eval_fcall
|
15
|
+
fun:rb_eval
|
16
|
+
fun:rb_load
|
17
|
+
fun:rb_require_safe
|
18
|
+
fun:rb_call0
|
19
|
+
fun:rb_call
|
20
|
+
fun:eval_fcall
|
21
|
+
fun:rb_eval
|
22
|
+
fun:rb_load
|
23
|
+
fun:rb_require_safe
|
24
|
+
fun:rb_protect
|
25
|
+
fun:require_libraries
|
26
|
+
fun:proc_options
|
27
|
+
fun:ruby_process_options
|
28
|
+
}
|
29
|
+
{
|
30
|
+
<insert_a_suppression_name_here>
|
31
|
+
Memcheck:Addr8
|
32
|
+
fun:garbage_collect_0
|
33
|
+
fun:rb_newobj
|
34
|
+
fun:rb_node_newnode
|
35
|
+
fun:ruby_yyparse
|
36
|
+
fun:yycompile
|
37
|
+
fun:load_file
|
38
|
+
fun:rb_load
|
39
|
+
fun:rb_require_safe
|
40
|
+
fun:rb_call0
|
41
|
+
fun:rb_call
|
42
|
+
fun:eval_fcall
|
43
|
+
fun:rb_eval
|
44
|
+
fun:rb_load
|
45
|
+
fun:rb_require_safe
|
46
|
+
fun:rb_call0
|
47
|
+
fun:rb_call
|
48
|
+
fun:eval_fcall
|
49
|
+
fun:rb_eval
|
50
|
+
fun:rb_load
|
51
|
+
fun:rb_require_safe
|
52
|
+
fun:rb_protect
|
53
|
+
fun:require_libraries
|
54
|
+
fun:proc_options
|
55
|
+
fun:ruby_process_options
|
56
|
+
}
|
57
|
+
{
|
58
|
+
<insert_a_suppression_name_here>
|
59
|
+
Memcheck:Addr8
|
60
|
+
fun:rb_gc_wipe_stack
|
61
|
+
}
|
File without changes
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
<insert_a_suppression_name_here>
|
3
|
+
Memcheck:Addr4
|
4
|
+
fun:glob_helper
|
5
|
+
fun:ruby_glob0
|
6
|
+
fun:rb_push_glob
|
7
|
+
fun:vm_call_method
|
8
|
+
fun:vm_exec_core
|
9
|
+
fun:vm_exec
|
10
|
+
fun:rb_yield
|
11
|
+
fun:rb_ary_each
|
12
|
+
fun:vm_call_method
|
13
|
+
fun:vm_exec_core
|
14
|
+
fun:vm_exec
|
15
|
+
fun:vm_call0
|
16
|
+
fun:rb_iterate
|
17
|
+
fun:rb_block_call
|
18
|
+
fun:enum_find_all
|
19
|
+
fun:vm_call_method
|
20
|
+
fun:vm_exec_core
|
21
|
+
fun:vm_exec
|
22
|
+
fun:vm_call0
|
23
|
+
fun:rb_class_new_instance
|
24
|
+
fun:vm_call_method
|
25
|
+
fun:vm_exec_core
|
26
|
+
fun:vm_exec
|
27
|
+
fun:vm_call0
|
28
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
<insert_a_suppression_name_here>
|
3
|
+
Memcheck:Addr4
|
4
|
+
fun:glob_helper
|
5
|
+
fun:ruby_glob0
|
6
|
+
fun:rb_push_glob
|
7
|
+
fun:vm_call_method
|
8
|
+
fun:vm_exec_core
|
9
|
+
fun:vm_exec
|
10
|
+
fun:rb_yield
|
11
|
+
fun:rb_ary_each
|
12
|
+
fun:vm_call_method
|
13
|
+
fun:vm_exec_core
|
14
|
+
fun:vm_exec
|
15
|
+
fun:vm_call0
|
16
|
+
fun:rb_iterate
|
17
|
+
fun:rb_block_call
|
18
|
+
fun:enum_find_all
|
19
|
+
fun:vm_call_method
|
20
|
+
fun:vm_exec_core
|
21
|
+
fun:vm_exec
|
22
|
+
fun:vm_call0
|
23
|
+
fun:rb_class_new_instance
|
24
|
+
fun:vm_call_method
|
25
|
+
fun:vm_exec_core
|
26
|
+
fun:vm_exec
|
27
|
+
fun:vm_call0
|
28
|
+
}
|
data/test/css/test_nthiness.rb
CHANGED
@@ -26,10 +26,20 @@ module Nokogiri
|
|
26
26
|
<div>
|
27
27
|
<b>bold1 </b>
|
28
28
|
<i>italic1 </i>
|
29
|
-
<b>bold2 </b>
|
29
|
+
<b class="a">bold2 </b>
|
30
|
+
<em class="a">emphasis1 </em>
|
30
31
|
<i>italic2 </i>
|
31
32
|
<p>para1 </p>
|
32
|
-
<b>bold3 </b>
|
33
|
+
<b class="a">bold3 </b>
|
34
|
+
</div>
|
35
|
+
<div>
|
36
|
+
<i class="b">italic3 </i>
|
37
|
+
<em>emphasis2 </em>
|
38
|
+
<i class="b">italic4 </i>
|
39
|
+
<em>emphasis3 </em>
|
40
|
+
<i class="c">italic5 </i>
|
41
|
+
<span><i class="b">italic6 </i></span>
|
42
|
+
<i>italic7 </i>
|
33
43
|
</div>
|
34
44
|
<div>
|
35
45
|
<p>para2 </p>
|
@@ -38,6 +48,20 @@ module Nokogiri
|
|
38
48
|
<div>
|
39
49
|
<p>para4 </p>
|
40
50
|
</div>
|
51
|
+
|
52
|
+
<div>
|
53
|
+
<h2></h2>
|
54
|
+
<h1 class='c'>header1 </h1>
|
55
|
+
<h2></h2>
|
56
|
+
</div>
|
57
|
+
<div>
|
58
|
+
<h1 class='c'>header2 </h1>
|
59
|
+
<h1 class='c'>header3 </h1>
|
60
|
+
</div>
|
61
|
+
<div>
|
62
|
+
<h1 class='c'>header4</h1>
|
63
|
+
</div>
|
64
|
+
|
41
65
|
<p class='empty'></p>
|
42
66
|
<p class='not-empty'><b></b></p>
|
43
67
|
</html>
|
@@ -74,6 +98,10 @@ EOF
|
|
74
98
|
assert_result_rows [1,2,3], @parser.search("table/tr:nth(-n+3)")
|
75
99
|
end
|
76
100
|
|
101
|
+
def test_4nm1
|
102
|
+
assert_result_rows [3,7,11], @parser.search("table/tr:nth(4n-1)")
|
103
|
+
end
|
104
|
+
|
77
105
|
def test_np3
|
78
106
|
assert_result_rows [3,4,5,6,7,8,9,10,11,12,13,14], @parser.search("table/tr:nth(n+3)")
|
79
107
|
end
|
@@ -91,29 +119,64 @@ EOF
|
|
91
119
|
def test_first_child
|
92
120
|
assert_result_rows [1], @parser.search("div/b:first-child"), "bold"
|
93
121
|
assert_result_rows [1], @parser.search("table/tr:first-child")
|
122
|
+
assert_result_rows [2,4], @parser.search("div/h1.c:first-child"), "header"
|
94
123
|
end
|
95
124
|
|
96
125
|
def test_last_child
|
97
126
|
assert_result_rows [3], @parser.search("div/b:last-child"), "bold"
|
98
127
|
assert_result_rows [14], @parser.search("table/tr:last-child")
|
128
|
+
assert_result_rows [3,4], @parser.search("div/h1.c:last-child"), "header"
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_nth_child
|
132
|
+
assert_result_rows [2], @parser.search("div/b:nth-child(3)"), "bold"
|
133
|
+
assert_result_rows [5], @parser.search("table/tr:nth-child(5)")
|
134
|
+
assert_result_rows [1,3], @parser.search("div/h1.c:nth-child(2)"), "header"
|
135
|
+
assert_result_rows [3,4], @parser.search("div/i.b:nth-child(2n+1)"), "italic"
|
99
136
|
end
|
100
137
|
|
101
138
|
def test_first_of_type
|
102
139
|
assert_result_rows [1], @parser.search("table/tr:first-of-type")
|
103
140
|
assert_result_rows [1], @parser.search("div/b:first-of-type"), "bold"
|
141
|
+
assert_result_rows [2], @parser.search("div/b.a:first-of-type"), "bold"
|
142
|
+
assert_result_rows [3], @parser.search("div/i.b:first-of-type"), "italic"
|
104
143
|
end
|
105
144
|
|
106
145
|
def test_last_of_type
|
107
146
|
assert_result_rows [14], @parser.search("table/tr:last-of-type")
|
108
147
|
assert_result_rows [3], @parser.search("div/b:last-of-type"), "bold"
|
148
|
+
assert_result_rows [2,7], @parser.search("div/i:last-of-type"), "italic"
|
149
|
+
assert_result_rows [2,6,7], @parser.search("div i:last-of-type"), "italic"
|
150
|
+
assert_result_rows [4], @parser.search("div/i.b:last-of-type"), "italic"
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_nth_of_type
|
154
|
+
assert_result_rows [1], @parser.search("div/b:nth-of-type(1)"), "bold"
|
155
|
+
assert_result_rows [2], @parser.search("div/b:nth-of-type(2)"), "bold"
|
156
|
+
assert_result_rows [2], @parser.search("div/.a:nth-of-type(1)"), "bold"
|
157
|
+
assert_result_rows [2,4,7], @parser.search("div i:nth-of-type(2n)"), "italic"
|
158
|
+
assert_result_rows [1,3,5,6], @parser.search("div i:nth-of-type(2n+1)"), "italic"
|
159
|
+
assert_result_rows [1], @parser.search("div .a:nth-of-type(2n)"), "emphasis"
|
160
|
+
assert_result_rows [2,3], @parser.search("div .a:nth-of-type(2n+1)"), "bold"
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_nth_last_of_type
|
164
|
+
assert_result_rows [14], @parser.search("table/tr:nth-last-of-type(1)")
|
165
|
+
assert_result_rows [12], @parser.search("table/tr:nth-last-of-type(3)")
|
166
|
+
assert_result_rows [2,6,7], @parser.search("div i:nth-last-of-type(1)"), "italic"
|
167
|
+
assert_result_rows [1,5], @parser.search("div i:nth-last-of-type(2)"), "italic"
|
168
|
+
assert_result_rows [4], @parser.search("div/i.b:nth-last-of-type(1)"), "italic"
|
169
|
+
assert_result_rows [3], @parser.search("div/i.b:nth-last-of-type(2)"), "italic"
|
109
170
|
end
|
110
171
|
|
111
172
|
def test_only_of_type
|
112
173
|
assert_result_rows [1,4], @parser.search("div/p:only-of-type"), "para"
|
174
|
+
assert_result_rows [5], @parser.search("div/i.c:only-of-type"), "italic"
|
113
175
|
end
|
114
176
|
|
115
177
|
def test_only_child
|
116
178
|
assert_result_rows [4], @parser.search("div/p:only-child"), "para"
|
179
|
+
assert_result_rows [4], @parser.search("div/h1.c:only-child"), "header"
|
117
180
|
end
|
118
181
|
|
119
182
|
def test_empty
|
data/test/css/test_parser.rb
CHANGED
@@ -82,9 +82,9 @@ module Nokogiri
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def test_function_with_arguments
|
85
|
-
assert_xpath "
|
85
|
+
assert_xpath "//a[count(preceding-sibling::*) = 1]",
|
86
86
|
@parser.parse("a[2]")
|
87
|
-
assert_xpath "
|
87
|
+
assert_xpath "//a[count(preceding-sibling::*) = 1]",
|
88
88
|
@parser.parse("a:nth-child(2)")
|
89
89
|
end
|
90
90
|
|
@@ -158,24 +158,31 @@ module Nokogiri
|
|
158
158
|
def test_standard_nth_selectors
|
159
159
|
assert_xpath '//a[position() = 1]', @parser.parse('a:first-of-type()')
|
160
160
|
assert_xpath '//a[position() = 1]', @parser.parse('a:first-of-type') # no parens
|
161
|
-
assert_xpath
|
161
|
+
assert_xpath "//a[contains(concat(' ', normalize-space(@class), ' '), ' b ')][position() = 1]",
|
162
|
+
@parser.parse('a.b:first-of-type') # no parens
|
163
|
+
assert_xpath '//a[position() = 99]', @parser.parse('a:nth-of-type(99)')
|
164
|
+
assert_xpath "//a[contains(concat(' ', normalize-space(@class), ' '), ' b ')][position() = 99]",
|
165
|
+
@parser.parse('a.b:nth-of-type(99)')
|
162
166
|
assert_xpath '//a[position() = last()]', @parser.parse('a:last-of-type()')
|
163
167
|
assert_xpath '//a[position() = last()]', @parser.parse('a:last-of-type') # no parens
|
168
|
+
assert_xpath "//a[contains(concat(' ', normalize-space(@class), ' '), ' b ')][position() = last()]",
|
169
|
+
@parser.parse('a.b:last-of-type') # no parens
|
164
170
|
assert_xpath '//a[position() = last()]', @parser.parse('a:nth-last-of-type(1)')
|
165
171
|
assert_xpath '//a[position() = last() - 98]', @parser.parse('a:nth-last-of-type(99)')
|
172
|
+
assert_xpath "//a[contains(concat(' ', normalize-space(@class), ' '), ' b ')][position() = last() - 98]",
|
173
|
+
@parser.parse('a.b:nth-last-of-type(99)')
|
166
174
|
end
|
167
175
|
|
168
176
|
def test_nth_child_selectors
|
169
|
-
assert_xpath '
|
170
|
-
assert_xpath '
|
171
|
-
assert_xpath '
|
172
|
-
assert_xpath '
|
173
|
-
assert_xpath '
|
177
|
+
assert_xpath '//a[count(preceding-sibling::*) = 0]', @parser.parse('a:first-child')
|
178
|
+
assert_xpath '//a[count(preceding-sibling::*) = 98]', @parser.parse('a:nth-child(99)')
|
179
|
+
assert_xpath '//a[count(following-sibling::*) = 0]', @parser.parse('a:last-child')
|
180
|
+
assert_xpath '//a[count(following-sbiling::*) = 0]', @parser.parse('a:nth-last-child(1)')
|
181
|
+
assert_xpath '//a[count(following-sbiling::*) = 98]', @parser.parse('a:nth-last-child(99)')
|
174
182
|
end
|
175
183
|
|
176
184
|
def test_miscellaneous_selectors
|
177
|
-
assert_xpath '
|
178
|
-
@parser.parse('a:only-child')
|
185
|
+
assert_xpath '//a[count(preceding-sibling::*) = 0 and count(following-sibling::*) = 0]', @parser.parse('a:only-child')
|
179
186
|
assert_xpath '//a[last() = 1]', @parser.parse('a:only-of-type')
|
180
187
|
assert_xpath '//a[not(node())]', @parser.parse('a:empty')
|
181
188
|
end
|
@@ -284,6 +291,11 @@ module Nokogiri
|
|
284
291
|
@parser.parse('foo .awesome')
|
285
292
|
end
|
286
293
|
|
294
|
+
def test_bare_not
|
295
|
+
assert_xpath "//*[not(contains(concat(' ', normalize-space(@class), ' '), ' a '))]",
|
296
|
+
@parser.parse(':not(.a)')
|
297
|
+
end
|
298
|
+
|
287
299
|
def test_not_so_simple_not
|
288
300
|
assert_xpath "//*[@id = 'p' and not(contains(concat(' ', normalize-space(@class), ' '), ' a '))]",
|
289
301
|
@parser.parse('#p:not(.a)')
|
@@ -293,6 +305,11 @@ module Nokogiri
|
|
293
305
|
@parser.parse("p[a='foo']:not(.b)")
|
294
306
|
end
|
295
307
|
|
308
|
+
def test_multiple_not
|
309
|
+
assert_xpath "//p[not(contains(concat(' ', normalize-space(@class), ' '), ' a ')) and not(contains(concat(' ', normalize-space(@class), ' '), ' b ')) and not(contains(concat(' ', normalize-space(@class), ' '), ' c '))]",
|
310
|
+
@parser.parse("p:not(.a):not(.b):not(.c)")
|
311
|
+
end
|
312
|
+
|
296
313
|
def test_ident
|
297
314
|
assert_xpath '//x', @parser.parse('x')
|
298
315
|
end
|
data/test/css/test_tokenizer.rb
CHANGED
@@ -13,10 +13,15 @@ module Nokogiri
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_not_last_child
|
16
|
-
assert_xpath('//ol/*[not(
|
16
|
+
assert_xpath('//ol/*[not(count(following-sibling::*) = 0)]',
|
17
17
|
@parser.parse('ol > *:not(:last-child)'))
|
18
18
|
end
|
19
19
|
|
20
|
+
def test_not_only_child
|
21
|
+
assert_xpath('//ol/*[not(count(preceding-sibling::*) = 0 and count(following-sibling::*) = 0)]',
|
22
|
+
@parser.parse('ol > *:not(:only-child)'))
|
23
|
+
end
|
24
|
+
|
20
25
|
def test_function_calls_allow_at_params
|
21
26
|
assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
|
22
27
|
assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
|
data/test/files/atom.xml
ADDED
@@ -0,0 +1,344 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US">
|
3
|
+
<id>tag:github.com,2008:/sparklemotion/nokogiri/commits/master</id>
|
4
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commits/master"/>
|
5
|
+
<link type="application/atom+xml" rel="self" href="https://github.com/sparklemotion/nokogiri/commits/master.atom"/>
|
6
|
+
<title>Recent Commits to nokogiri:master</title>
|
7
|
+
<updated>2013-07-02T08:17:16-07:00</updated>
|
8
|
+
<entry>
|
9
|
+
<id>tag:github.com,2008:Grit::Commit/233489ddfe4698b24dfcdc1daf3ca15bc880e4b1</id>
|
10
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/233489ddfe4698b24dfcdc1daf3ca15bc880e4b1"/>
|
11
|
+
<title>
|
12
|
+
Updated changelog with merged pull requests #887 and #931
|
13
|
+
</title>
|
14
|
+
<updated>2013-07-02T08:17:16-07:00</updated>
|
15
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
16
|
+
<author>
|
17
|
+
<name>injekt</name>
|
18
|
+
<uri>https://github.com/injekt</uri>
|
19
|
+
</author>
|
20
|
+
<content type="html">
|
21
|
+
<pre style='white-space:pre-wrap;width:81ex'>Updated changelog with merged pull requests #887 and #931</pre>
|
22
|
+
</content>
|
23
|
+
</entry>
|
24
|
+
<entry>
|
25
|
+
<id>tag:github.com,2008:Grit::Commit/15eff8be4539a3461cfc1e3c8a257e7eed134e01</id>
|
26
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/15eff8be4539a3461cfc1e3c8a257e7eed134e01"/>
|
27
|
+
<title>
|
28
|
+
Merge pull request #887 from Mange/double-not
|
29
|
+
</title>
|
30
|
+
<updated>2013-07-02T08:13:36-07:00</updated>
|
31
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
32
|
+
<author>
|
33
|
+
<name>injekt</name>
|
34
|
+
<uri>https://github.com/injekt</uri>
|
35
|
+
</author>
|
36
|
+
<content type="html">
|
37
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #887 from Mange/double-not
|
38
|
+
|
39
|
+
Add support for bare and multiple :not() functions in selectors</pre>
|
40
|
+
</content>
|
41
|
+
</entry>
|
42
|
+
<entry>
|
43
|
+
<id>tag:github.com,2008:Grit::Commit/7a54b1fd1ba1dbcd50d3566bcc62d554eb0fd30e</id>
|
44
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/7a54b1fd1ba1dbcd50d3566bcc62d554eb0fd30e"/>
|
45
|
+
<title>
|
46
|
+
Merge pull request #931 from sorah/dont_call_pkgconfig_when_using_bundled_libraries
|
47
|
+
</title>
|
48
|
+
<updated>2013-07-02T08:11:37-07:00</updated>
|
49
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
50
|
+
<author>
|
51
|
+
<name>knu</name>
|
52
|
+
<uri>https://github.com/knu</uri>
|
53
|
+
</author>
|
54
|
+
<content type="html">
|
55
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #931 from sorah/dont_call_pkgconfig_when_using_bundled_libraries
|
56
|
+
|
57
|
+
extconf.rb: Don't call pkg_config when using bundled libraries</pre>
|
58
|
+
</content>
|
59
|
+
</entry>
|
60
|
+
<entry>
|
61
|
+
<id>tag:github.com,2008:Grit::Commit/e5b93617ba810a34a4fc70dac76a83f9bebd2ea1</id>
|
62
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/e5b93617ba810a34a4fc70dac76a83f9bebd2ea1"/>
|
63
|
+
<title>
|
64
|
+
extconf.rb: Don't call pkg_config when using bundled libraries
|
65
|
+
</title>
|
66
|
+
<updated>2013-07-02T06:30:00-07:00</updated>
|
67
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/c4f076f658dd3464f1d8785ad53a0d99?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
68
|
+
<author>
|
69
|
+
<name>sorah</name>
|
70
|
+
<uri>https://github.com/sorah</uri>
|
71
|
+
</author>
|
72
|
+
<content type="html">
|
73
|
+
<pre style='white-space:pre-wrap;width:81ex'>extconf.rb: Don't call pkg_config when using bundled libraries</pre>
|
74
|
+
</content>
|
75
|
+
</entry>
|
76
|
+
<entry>
|
77
|
+
<id>tag:github.com,2008:Grit::Commit/64cd3c8f506394b558bda9376844a51db971bd60</id>
|
78
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/64cd3c8f506394b558bda9376844a51db971bd60"/>
|
79
|
+
<title>
|
80
|
+
Add support for bare and multiple :not() functions in selectors
|
81
|
+
</title>
|
82
|
+
<updated>2013-06-28T10:19:36-07:00</updated>
|
83
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/1b2792536d87aa21bc739c14980fa103?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
84
|
+
<author>
|
85
|
+
<name>Mange</name>
|
86
|
+
<uri>https://github.com/Mange</uri>
|
87
|
+
</author>
|
88
|
+
<content type="html">
|
89
|
+
<pre style='white-space:pre-wrap;width:81ex'>Add support for bare and multiple :not() functions in selectors
|
90
|
+
|
91
|
+
This enables parsing of ".flash:not(.error):not(.warning)" and
|
92
|
+
":not(p)".
|
93
|
+
|
94
|
+
This entailed a huge change to the parser, but I think the parser should
|
95
|
+
be a bit more robust now by not declaring :not a special case.</pre>
|
96
|
+
</content>
|
97
|
+
</entry>
|
98
|
+
<entry>
|
99
|
+
<id>tag:github.com,2008:Grit::Commit/37828ec784faf29d713225fa78585854912356cd</id>
|
100
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/37828ec784faf29d713225fa78585854912356cd"/>
|
101
|
+
<title>
|
102
|
+
Report error and stop parsing instead of silently ignoring it.
|
103
|
+
</title>
|
104
|
+
<updated>2013-06-27T18:46:12-07:00</updated>
|
105
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/2736d9750eb13425e9bf70f112753c49?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
106
|
+
<author>
|
107
|
+
<name>jvshahid</name>
|
108
|
+
<uri>https://github.com/jvshahid</uri>
|
109
|
+
</author>
|
110
|
+
<content type="html">
|
111
|
+
<pre style='white-space:pre-wrap;width:81ex'>Report error and stop parsing instead of silently ignoring it.</pre>
|
112
|
+
</content>
|
113
|
+
</entry>
|
114
|
+
<entry>
|
115
|
+
<id>tag:github.com,2008:Grit::Commit/42da60e8ca58a5acc9e8c94ae5ad490589f146c6</id>
|
116
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/42da60e8ca58a5acc9e8c94ae5ad490589f146c6"/>
|
117
|
+
<title>
|
118
|
+
Merge pull request #930 from ctborg/master
|
119
|
+
</title>
|
120
|
+
<updated>2013-06-27T04:23:33-07:00</updated>
|
121
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
122
|
+
<author>
|
123
|
+
<name>injekt</name>
|
124
|
+
<uri>https://github.com/injekt</uri>
|
125
|
+
</author>
|
126
|
+
<content type="html">
|
127
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #930 from ctborg/master
|
128
|
+
|
129
|
+
Adds support for Solaris, OpenSolaris, or illumos.</pre>
|
130
|
+
</content>
|
131
|
+
</entry>
|
132
|
+
<entry>
|
133
|
+
<id>tag:github.com,2008:Grit::Commit/7382a6e6a66d3f80da955ebbcd82250f99321900</id>
|
134
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/7382a6e6a66d3f80da955ebbcd82250f99321900"/>
|
135
|
+
<title>
|
136
|
+
Updated CHANGELOG with latest merged pulls
|
137
|
+
</title>
|
138
|
+
<updated>2013-06-27T04:04:17-07:00</updated>
|
139
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
140
|
+
<author>
|
141
|
+
<name>injekt</name>
|
142
|
+
<uri>https://github.com/injekt</uri>
|
143
|
+
</author>
|
144
|
+
<content type="html">
|
145
|
+
<pre style='white-space:pre-wrap;width:81ex'>Updated CHANGELOG with latest merged pulls</pre>
|
146
|
+
</content>
|
147
|
+
</entry>
|
148
|
+
<entry>
|
149
|
+
<id>tag:github.com,2008:Grit::Commit/3382ebc90e17f2503f4acbbdf53a931d38f3322a</id>
|
150
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/3382ebc90e17f2503f4acbbdf53a931d38f3322a"/>
|
151
|
+
<title>
|
152
|
+
Remove REE also.
|
153
|
+
</title>
|
154
|
+
<updated>2013-06-19T20:57:48-07:00</updated>
|
155
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
156
|
+
<author>
|
157
|
+
<name>knu</name>
|
158
|
+
<uri>https://github.com/knu</uri>
|
159
|
+
</author>
|
160
|
+
<content type="html">
|
161
|
+
<pre style='white-space:pre-wrap;width:81ex'>Remove REE also.</pre>
|
162
|
+
</content>
|
163
|
+
</entry>
|
164
|
+
<entry>
|
165
|
+
<id>tag:github.com,2008:Grit::Commit/0c83f4027e295435680cda89a44b5e039e0e6cbb</id>
|
166
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/0c83f4027e295435680cda89a44b5e039e0e6cbb"/>
|
167
|
+
<title>
|
168
|
+
Added support for Solaris, OpenSolaris, or illumos
|
169
|
+
</title>
|
170
|
+
<updated>2013-06-19T07:12:50-07:00</updated>
|
171
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/aff9165c0ea741d027799d5694d0ceb8?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
172
|
+
<author>
|
173
|
+
<name></name>
|
174
|
+
<email>cborg@oanda.com</email>
|
175
|
+
</author>
|
176
|
+
<content type="html">
|
177
|
+
<pre style='white-space:pre-wrap;width:81ex'>Added support for Solaris, OpenSolaris, or illumos</pre>
|
178
|
+
</content>
|
179
|
+
</entry>
|
180
|
+
<entry>
|
181
|
+
<id>tag:github.com,2008:Grit::Commit/fb000c51e3ba4e8730a535d38d617d34111c21ef</id>
|
182
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/fb000c51e3ba4e8730a535d38d617d34111c21ef"/>
|
183
|
+
<title>
|
184
|
+
Ensure meta_encoding checks meta charset tag (closes #919)
|
185
|
+
</title>
|
186
|
+
<updated>2013-06-14T06:06:26-07:00</updated>
|
187
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
188
|
+
<author>
|
189
|
+
<name>injekt</name>
|
190
|
+
<uri>https://github.com/injekt</uri>
|
191
|
+
</author>
|
192
|
+
<content type="html">
|
193
|
+
<pre style='white-space:pre-wrap;width:81ex'>Ensure meta_encoding checks meta charset tag (closes #919)</pre>
|
194
|
+
</content>
|
195
|
+
</entry>
|
196
|
+
<entry>
|
197
|
+
<id>tag:github.com,2008:Grit::Commit/14b7dc21bbeddec1990726760e6f6cc11e71542e</id>
|
198
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/14b7dc21bbeddec1990726760e6f6cc11e71542e"/>
|
199
|
+
<title>
|
200
|
+
Updated ROADMAP
|
201
|
+
</title>
|
202
|
+
<updated>2013-06-14T06:00:57-07:00</updated>
|
203
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
204
|
+
<author>
|
205
|
+
<name>injekt</name>
|
206
|
+
<uri>https://github.com/injekt</uri>
|
207
|
+
</author>
|
208
|
+
<content type="html">
|
209
|
+
<pre style='white-space:pre-wrap;width:81ex'>Updated ROADMAP</pre>
|
210
|
+
</content>
|
211
|
+
</entry>
|
212
|
+
<entry>
|
213
|
+
<id>tag:github.com,2008:Grit::Commit/d1b0afd02f8a2b783380bdfde3acfabf021a0c5a</id>
|
214
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/d1b0afd02f8a2b783380bdfde3acfabf021a0c5a"/>
|
215
|
+
<title>
|
216
|
+
Merge pull request #858 from ykzts/feature/not-only-child
|
217
|
+
</title>
|
218
|
+
<updated>2013-06-14T05:53:28-07:00</updated>
|
219
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
220
|
+
<author>
|
221
|
+
<name>injekt</name>
|
222
|
+
<uri>https://github.com/injekt</uri>
|
223
|
+
</author>
|
224
|
+
<content type="html">
|
225
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #858 from ykzts/feature/not-only-child
|
226
|
+
|
227
|
+
Add feature that the ':only-child' pseudo class should work even though it's in ':not' pseudo class.</pre>
|
228
|
+
</content>
|
229
|
+
</entry>
|
230
|
+
<entry>
|
231
|
+
<id>tag:github.com,2008:Grit::Commit/d24eb8508c69f2cf336f1ff1b6887fcc3b317fbc</id>
|
232
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/d24eb8508c69f2cf336f1ff1b6887fcc3b317fbc"/>
|
233
|
+
<title>
|
234
|
+
Merge pull request #886 from Mange/negative-nth
|
235
|
+
</title>
|
236
|
+
<updated>2013-06-14T05:50:13-07:00</updated>
|
237
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
238
|
+
<author>
|
239
|
+
<name>injekt</name>
|
240
|
+
<uri>https://github.com/injekt</uri>
|
241
|
+
</author>
|
242
|
+
<content type="html">
|
243
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #886 from Mange/negative-nth
|
244
|
+
|
245
|
+
Add support for an-b in nth selectors</pre>
|
246
|
+
</content>
|
247
|
+
</entry>
|
248
|
+
<entry>
|
249
|
+
<id>tag:github.com,2008:Grit::Commit/11eaf3d3f1b84adf5225b6686119dbc6714b4009</id>
|
250
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/11eaf3d3f1b84adf5225b6686119dbc6714b4009"/>
|
251
|
+
<title>
|
252
|
+
Note 1.8 deprecation in README
|
253
|
+
</title>
|
254
|
+
<updated>2013-06-11T06:48:53-07:00</updated>
|
255
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
256
|
+
<author>
|
257
|
+
<name>flavorjones</name>
|
258
|
+
<uri>https://github.com/flavorjones</uri>
|
259
|
+
</author>
|
260
|
+
<content type="html">
|
261
|
+
<pre style='white-space:pre-wrap;width:81ex'>Note 1.8 deprecation in README</pre>
|
262
|
+
</content>
|
263
|
+
</entry>
|
264
|
+
<entry>
|
265
|
+
<id>tag:github.com,2008:Grit::Commit/82a936a0ceba0508d29cc9f6da84c5a98ae7bede</id>
|
266
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/82a936a0ceba0508d29cc9f6da84c5a98ae7bede"/>
|
267
|
+
<title>
|
268
|
+
Fix a typo and DRY with dir_config() calls.
|
269
|
+
</title>
|
270
|
+
<updated>2013-06-10T21:01:03-07:00</updated>
|
271
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
272
|
+
<author>
|
273
|
+
<name>knu</name>
|
274
|
+
<uri>https://github.com/knu</uri>
|
275
|
+
</author>
|
276
|
+
<content type="html">
|
277
|
+
<pre style='white-space:pre-wrap;width:81ex'>Fix a typo and DRY with dir_config() calls.</pre>
|
278
|
+
</content>
|
279
|
+
</entry>
|
280
|
+
<entry>
|
281
|
+
<id>tag:github.com,2008:Grit::Commit/c7ef9b339054f8502e7f526b1b8054e3412cf7ba</id>
|
282
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/c7ef9b339054f8502e7f526b1b8054e3412cf7ba"/>
|
283
|
+
<title>
|
284
|
+
Iconv was for building libxml2 and not for nokogiri itself.
|
285
|
+
</title>
|
286
|
+
<updated>2013-06-10T17:55:20-07:00</updated>
|
287
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
288
|
+
<author>
|
289
|
+
<name>knu</name>
|
290
|
+
<uri>https://github.com/knu</uri>
|
291
|
+
</author>
|
292
|
+
<content type="html">
|
293
|
+
<pre style='white-space:pre-wrap;width:81ex'>Iconv was for building libxml2 and not for nokogiri itself.</pre>
|
294
|
+
</content>
|
295
|
+
</entry>
|
296
|
+
<entry>
|
297
|
+
<id>tag:github.com,2008:Grit::Commit/4c1c225b9409571156430aeb5bcf89c4f9dd4812</id>
|
298
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/4c1c225b9409571156430aeb5bcf89c4f9dd4812"/>
|
299
|
+
<title>
|
300
|
+
Make sure the MRI gem is built correctly.
|
301
|
+
</title>
|
302
|
+
<updated>2013-06-10T07:40:39-07:00</updated>
|
303
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
304
|
+
<author>
|
305
|
+
<name>flavorjones</name>
|
306
|
+
<uri>https://github.com/flavorjones</uri>
|
307
|
+
</author>
|
308
|
+
<content type="html">
|
309
|
+
<pre style='white-space:pre-wrap;width:81ex'>Make sure the MRI gem is built correctly.</pre>
|
310
|
+
</content>
|
311
|
+
</entry>
|
312
|
+
<entry>
|
313
|
+
<id>tag:github.com,2008:Grit::Commit/b6100afd7a0ce17097fb3ca58ae8fe5e63522f6d</id>
|
314
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/b6100afd7a0ce17097fb3ca58ae8fe5e63522f6d"/>
|
315
|
+
<title>
|
316
|
+
Fiddling with the windows cross-compile gem logic.
|
317
|
+
</title>
|
318
|
+
<updated>2013-06-10T07:33:59-07:00</updated>
|
319
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
320
|
+
<author>
|
321
|
+
<name>flavorjones</name>
|
322
|
+
<uri>https://github.com/flavorjones</uri>
|
323
|
+
</author>
|
324
|
+
<content type="html">
|
325
|
+
<pre style='white-space:pre-wrap;width:81ex'>Fiddling with the windows cross-compile gem logic.</pre>
|
326
|
+
</content>
|
327
|
+
</entry>
|
328
|
+
<entry>
|
329
|
+
<id>tag:github.com,2008:Grit::Commit/b1483de363524c882b5e682a3d3a6e6ab5d7511b</id>
|
330
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/b1483de363524c882b5e682a3d3a6e6ab5d7511b"/>
|
331
|
+
<title>
|
332
|
+
build_all now uses ruby 1.9.3 to build everything.
|
333
|
+
</title>
|
334
|
+
<updated>2013-06-10T07:33:56-07:00</updated>
|
335
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
336
|
+
<author>
|
337
|
+
<name>flavorjones</name>
|
338
|
+
<uri>https://github.com/flavorjones</uri>
|
339
|
+
</author>
|
340
|
+
<content type="html">
|
341
|
+
<pre style='white-space:pre-wrap;width:81ex'>build_all now uses ruby 1.9.3 to build everything.</pre>
|
342
|
+
</content>
|
343
|
+
</entry>
|
344
|
+
</feed>
|