nokogiri 1.6.2.rc1-x64-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.

Files changed (263) hide show
  1. checksums.yaml +7 -0
  2. data/.autotest +26 -0
  3. data/.editorconfig +17 -0
  4. data/.gemtest +0 -0
  5. data/.travis.yml +25 -0
  6. data/CHANGELOG.ja.rdoc +857 -0
  7. data/CHANGELOG.rdoc +880 -0
  8. data/C_CODING_STYLE.rdoc +33 -0
  9. data/Gemfile +21 -0
  10. data/Manifest.txt +371 -0
  11. data/README.ja.rdoc +112 -0
  12. data/README.rdoc +180 -0
  13. data/ROADMAP.md +89 -0
  14. data/Rakefile +351 -0
  15. data/STANDARD_RESPONSES.md +47 -0
  16. data/Y_U_NO_GEMSPEC.md +155 -0
  17. data/bin/nokogiri +78 -0
  18. data/build_all +130 -0
  19. data/dependencies.yml +4 -0
  20. data/ext/nokogiri/depend +358 -0
  21. data/ext/nokogiri/extconf.rb +453 -0
  22. data/ext/nokogiri/html_document.c +170 -0
  23. data/ext/nokogiri/html_document.h +10 -0
  24. data/ext/nokogiri/html_element_description.c +279 -0
  25. data/ext/nokogiri/html_element_description.h +10 -0
  26. data/ext/nokogiri/html_entity_lookup.c +32 -0
  27. data/ext/nokogiri/html_entity_lookup.h +8 -0
  28. data/ext/nokogiri/html_sax_parser_context.c +116 -0
  29. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  30. data/ext/nokogiri/html_sax_push_parser.c +87 -0
  31. data/ext/nokogiri/html_sax_push_parser.h +9 -0
  32. data/ext/nokogiri/nokogiri.c +148 -0
  33. data/ext/nokogiri/nokogiri.h +164 -0
  34. data/ext/nokogiri/xml_attr.c +94 -0
  35. data/ext/nokogiri/xml_attr.h +9 -0
  36. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  37. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  38. data/ext/nokogiri/xml_cdata.c +56 -0
  39. data/ext/nokogiri/xml_cdata.h +9 -0
  40. data/ext/nokogiri/xml_comment.c +54 -0
  41. data/ext/nokogiri/xml_comment.h +9 -0
  42. data/ext/nokogiri/xml_document.c +577 -0
  43. data/ext/nokogiri/xml_document.h +23 -0
  44. data/ext/nokogiri/xml_document_fragment.c +48 -0
  45. data/ext/nokogiri/xml_document_fragment.h +10 -0
  46. data/ext/nokogiri/xml_dtd.c +202 -0
  47. data/ext/nokogiri/xml_dtd.h +10 -0
  48. data/ext/nokogiri/xml_element_content.c +123 -0
  49. data/ext/nokogiri/xml_element_content.h +10 -0
  50. data/ext/nokogiri/xml_element_decl.c +69 -0
  51. data/ext/nokogiri/xml_element_decl.h +9 -0
  52. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  53. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  54. data/ext/nokogiri/xml_entity_decl.c +110 -0
  55. data/ext/nokogiri/xml_entity_decl.h +10 -0
  56. data/ext/nokogiri/xml_entity_reference.c +52 -0
  57. data/ext/nokogiri/xml_entity_reference.h +9 -0
  58. data/ext/nokogiri/xml_io.c +56 -0
  59. data/ext/nokogiri/xml_io.h +11 -0
  60. data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  61. data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  62. data/ext/nokogiri/xml_namespace.c +78 -0
  63. data/ext/nokogiri/xml_namespace.h +13 -0
  64. data/ext/nokogiri/xml_node.c +1541 -0
  65. data/ext/nokogiri/xml_node.h +13 -0
  66. data/ext/nokogiri/xml_node_set.c +467 -0
  67. data/ext/nokogiri/xml_node_set.h +14 -0
  68. data/ext/nokogiri/xml_processing_instruction.c +56 -0
  69. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  70. data/ext/nokogiri/xml_reader.c +681 -0
  71. data/ext/nokogiri/xml_reader.h +10 -0
  72. data/ext/nokogiri/xml_relax_ng.c +161 -0
  73. data/ext/nokogiri/xml_relax_ng.h +9 -0
  74. data/ext/nokogiri/xml_sax_parser.c +312 -0
  75. data/ext/nokogiri/xml_sax_parser.h +39 -0
  76. data/ext/nokogiri/xml_sax_parser_context.c +262 -0
  77. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  78. data/ext/nokogiri/xml_sax_push_parser.c +115 -0
  79. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  80. data/ext/nokogiri/xml_schema.c +205 -0
  81. data/ext/nokogiri/xml_schema.h +9 -0
  82. data/ext/nokogiri/xml_syntax_error.c +63 -0
  83. data/ext/nokogiri/xml_syntax_error.h +13 -0
  84. data/ext/nokogiri/xml_text.c +52 -0
  85. data/ext/nokogiri/xml_text.h +9 -0
  86. data/ext/nokogiri/xml_xpath_context.c +307 -0
  87. data/ext/nokogiri/xml_xpath_context.h +10 -0
  88. data/ext/nokogiri/xslt_stylesheet.c +270 -0
  89. data/ext/nokogiri/xslt_stylesheet.h +14 -0
  90. data/lib/nokogiri.rb +137 -0
  91. data/lib/nokogiri/2.0/nokogiri.so +0 -0
  92. data/lib/nokogiri/2.1/nokogiri.so +0 -0
  93. data/lib/nokogiri/css.rb +27 -0
  94. data/lib/nokogiri/css/node.rb +52 -0
  95. data/lib/nokogiri/css/parser.rb +715 -0
  96. data/lib/nokogiri/css/parser.y +249 -0
  97. data/lib/nokogiri/css/parser_extras.rb +91 -0
  98. data/lib/nokogiri/css/syntax_error.rb +7 -0
  99. data/lib/nokogiri/css/tokenizer.rb +152 -0
  100. data/lib/nokogiri/css/tokenizer.rex +55 -0
  101. data/lib/nokogiri/css/xpath_visitor.rb +219 -0
  102. data/lib/nokogiri/decorators/slop.rb +35 -0
  103. data/lib/nokogiri/html.rb +37 -0
  104. data/lib/nokogiri/html/builder.rb +35 -0
  105. data/lib/nokogiri/html/document.rb +333 -0
  106. data/lib/nokogiri/html/document_fragment.rb +41 -0
  107. data/lib/nokogiri/html/element_description.rb +23 -0
  108. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  109. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  110. data/lib/nokogiri/html/sax/parser.rb +52 -0
  111. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  112. data/lib/nokogiri/html/sax/push_parser.rb +16 -0
  113. data/lib/nokogiri/syntax_error.rb +4 -0
  114. data/lib/nokogiri/version.rb +106 -0
  115. data/lib/nokogiri/xml.rb +73 -0
  116. data/lib/nokogiri/xml/attr.rb +14 -0
  117. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  118. data/lib/nokogiri/xml/builder.rb +443 -0
  119. data/lib/nokogiri/xml/cdata.rb +11 -0
  120. data/lib/nokogiri/xml/character_data.rb +7 -0
  121. data/lib/nokogiri/xml/document.rb +279 -0
  122. data/lib/nokogiri/xml/document_fragment.rb +112 -0
  123. data/lib/nokogiri/xml/dtd.rb +32 -0
  124. data/lib/nokogiri/xml/element_content.rb +36 -0
  125. data/lib/nokogiri/xml/element_decl.rb +13 -0
  126. data/lib/nokogiri/xml/entity_decl.rb +19 -0
  127. data/lib/nokogiri/xml/namespace.rb +13 -0
  128. data/lib/nokogiri/xml/node.rb +982 -0
  129. data/lib/nokogiri/xml/node/save_options.rb +61 -0
  130. data/lib/nokogiri/xml/node_set.rb +355 -0
  131. data/lib/nokogiri/xml/notation.rb +6 -0
  132. data/lib/nokogiri/xml/parse_options.rb +98 -0
  133. data/lib/nokogiri/xml/pp.rb +2 -0
  134. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  135. data/lib/nokogiri/xml/pp/node.rb +56 -0
  136. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  137. data/lib/nokogiri/xml/reader.rb +112 -0
  138. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  139. data/lib/nokogiri/xml/sax.rb +4 -0
  140. data/lib/nokogiri/xml/sax/document.rb +171 -0
  141. data/lib/nokogiri/xml/sax/parser.rb +123 -0
  142. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  143. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  144. data/lib/nokogiri/xml/schema.rb +63 -0
  145. data/lib/nokogiri/xml/syntax_error.rb +47 -0
  146. data/lib/nokogiri/xml/text.rb +9 -0
  147. data/lib/nokogiri/xml/xpath.rb +10 -0
  148. data/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  149. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  150. data/lib/nokogiri/xslt.rb +56 -0
  151. data/lib/nokogiri/xslt/stylesheet.rb +25 -0
  152. data/lib/xsd/xmlparser/nokogiri.rb +102 -0
  153. data/suppressions/README.txt +1 -0
  154. data/suppressions/nokogiri_ree-1.8.7.358.supp +61 -0
  155. data/suppressions/nokogiri_ruby-1.8.7.370.supp +0 -0
  156. data/suppressions/nokogiri_ruby-1.9.2.320.supp +28 -0
  157. data/suppressions/nokogiri_ruby-1.9.3.327.supp +28 -0
  158. data/tasks/nokogiri.org.rb +24 -0
  159. data/tasks/test.rb +95 -0
  160. data/test/css/test_nthiness.rb +222 -0
  161. data/test/css/test_parser.rb +358 -0
  162. data/test/css/test_tokenizer.rb +198 -0
  163. data/test/css/test_xpath_visitor.rb +96 -0
  164. data/test/decorators/test_slop.rb +16 -0
  165. data/test/files/2ch.html +108 -0
  166. data/test/files/address_book.rlx +12 -0
  167. data/test/files/address_book.xml +10 -0
  168. data/test/files/atom.xml +344 -0
  169. data/test/files/bar/bar.xsd +4 -0
  170. data/test/files/bogus.xml +0 -0
  171. data/test/files/dont_hurt_em_why.xml +422 -0
  172. data/test/files/encoding.html +82 -0
  173. data/test/files/encoding.xhtml +84 -0
  174. data/test/files/exslt.xml +8 -0
  175. data/test/files/exslt.xslt +35 -0
  176. data/test/files/foo/foo.xsd +4 -0
  177. data/test/files/metacharset.html +10 -0
  178. data/test/files/noencoding.html +47 -0
  179. data/test/files/po.xml +32 -0
  180. data/test/files/po.xsd +66 -0
  181. data/test/files/saml/saml20assertion_schema.xsd +283 -0
  182. data/test/files/saml/saml20protocol_schema.xsd +302 -0
  183. data/test/files/saml/xenc_schema.xsd +146 -0
  184. data/test/files/saml/xmldsig_schema.xsd +318 -0
  185. data/test/files/shift_jis.html +10 -0
  186. data/test/files/shift_jis.xml +5 -0
  187. data/test/files/shift_jis_no_charset.html +9 -0
  188. data/test/files/snuggles.xml +3 -0
  189. data/test/files/staff.dtd +10 -0
  190. data/test/files/staff.xml +59 -0
  191. data/test/files/staff.xslt +32 -0
  192. data/test/files/test_document_url/bar.xml +2 -0
  193. data/test/files/test_document_url/document.dtd +4 -0
  194. data/test/files/test_document_url/document.xml +6 -0
  195. data/test/files/tlm.html +850 -0
  196. data/test/files/to_be_xincluded.xml +2 -0
  197. data/test/files/valid_bar.xml +2 -0
  198. data/test/files/xinclude.xml +4 -0
  199. data/test/helper.rb +164 -0
  200. data/test/html/sax/test_parser.rb +141 -0
  201. data/test/html/sax/test_parser_context.rb +46 -0
  202. data/test/html/test_builder.rb +164 -0
  203. data/test/html/test_document.rb +619 -0
  204. data/test/html/test_document_encoding.rb +148 -0
  205. data/test/html/test_document_fragment.rb +261 -0
  206. data/test/html/test_element_description.rb +105 -0
  207. data/test/html/test_named_characters.rb +14 -0
  208. data/test/html/test_node.rb +196 -0
  209. data/test/html/test_node_encoding.rb +27 -0
  210. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +14 -0
  211. data/test/namespaces/test_namespaces_in_builder_doc.rb +75 -0
  212. data/test/namespaces/test_namespaces_in_cloned_doc.rb +31 -0
  213. data/test/namespaces/test_namespaces_in_created_doc.rb +75 -0
  214. data/test/namespaces/test_namespaces_in_parsed_doc.rb +66 -0
  215. data/test/test_convert_xpath.rb +135 -0
  216. data/test/test_css_cache.rb +45 -0
  217. data/test/test_encoding_handler.rb +46 -0
  218. data/test/test_memory_leak.rb +156 -0
  219. data/test/test_nokogiri.rb +138 -0
  220. data/test/test_reader.rb +558 -0
  221. data/test/test_soap4r_sax.rb +52 -0
  222. data/test/test_xslt_transforms.rb +279 -0
  223. data/test/xml/node/test_save_options.rb +28 -0
  224. data/test/xml/node/test_subclass.rb +44 -0
  225. data/test/xml/sax/test_parser.rb +382 -0
  226. data/test/xml/sax/test_parser_context.rb +115 -0
  227. data/test/xml/sax/test_push_parser.rb +157 -0
  228. data/test/xml/test_attr.rb +64 -0
  229. data/test/xml/test_attribute_decl.rb +86 -0
  230. data/test/xml/test_builder.rb +315 -0
  231. data/test/xml/test_c14n.rb +161 -0
  232. data/test/xml/test_cdata.rb +48 -0
  233. data/test/xml/test_comment.rb +29 -0
  234. data/test/xml/test_document.rb +934 -0
  235. data/test/xml/test_document_encoding.rb +28 -0
  236. data/test/xml/test_document_fragment.rb +228 -0
  237. data/test/xml/test_dtd.rb +187 -0
  238. data/test/xml/test_dtd_encoding.rb +33 -0
  239. data/test/xml/test_element_content.rb +56 -0
  240. data/test/xml/test_element_decl.rb +73 -0
  241. data/test/xml/test_entity_decl.rb +122 -0
  242. data/test/xml/test_entity_reference.rb +245 -0
  243. data/test/xml/test_namespace.rb +95 -0
  244. data/test/xml/test_node.rb +1155 -0
  245. data/test/xml/test_node_attributes.rb +113 -0
  246. data/test/xml/test_node_encoding.rb +107 -0
  247. data/test/xml/test_node_inheritance.rb +32 -0
  248. data/test/xml/test_node_reparenting.rb +374 -0
  249. data/test/xml/test_node_set.rb +755 -0
  250. data/test/xml/test_parse_options.rb +64 -0
  251. data/test/xml/test_processing_instruction.rb +30 -0
  252. data/test/xml/test_reader_encoding.rb +142 -0
  253. data/test/xml/test_relax_ng.rb +60 -0
  254. data/test/xml/test_schema.rb +129 -0
  255. data/test/xml/test_syntax_error.rb +12 -0
  256. data/test/xml/test_text.rb +45 -0
  257. data/test/xml/test_unparented_node.rb +422 -0
  258. data/test/xml/test_xinclude.rb +83 -0
  259. data/test/xml/test_xpath.rb +376 -0
  260. data/test/xslt/test_custom_functions.rb +133 -0
  261. data/test/xslt/test_exception_handling.rb +37 -0
  262. data/test_all +81 -0
  263. metadata +601 -0
@@ -0,0 +1,198 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require "helper"
4
+
5
+ module Nokogiri
6
+ module CSS
7
+ class Tokenizer
8
+ alias :scan :scan_setup
9
+ end
10
+ end
11
+ end
12
+
13
+ module Nokogiri
14
+ module CSS
15
+ class TestTokenizer < Nokogiri::TestCase
16
+ def setup
17
+ super
18
+ @scanner = Nokogiri::CSS::Tokenizer.new
19
+ end
20
+
21
+ def test_has
22
+ @scanner.scan("a:has(b)")
23
+ assert_tokens(
24
+ [[:IDENT, "a"], [":", ":"], [:HAS, "has("], [:IDENT, "b"], [:RPAREN, ")"]],
25
+ @scanner)
26
+ end
27
+
28
+ def test_unicode
29
+ @scanner.scan("a日本語")
30
+ assert_tokens([[:IDENT, 'a日本語']], @scanner)
31
+ end
32
+
33
+ def test_tokenize_bad_single_quote
34
+ @scanner.scan("'")
35
+ assert_tokens([["'", "'"]], @scanner)
36
+ end
37
+
38
+ def test_not_equal
39
+ @scanner.scan("h1[a!='Tender Lovemaking']")
40
+ assert_tokens([ [:IDENT, 'h1'],
41
+ [:LSQUARE, '['],
42
+ [:IDENT, 'a'],
43
+ [:NOT_EQUAL, '!='],
44
+ [:STRING, "'Tender Lovemaking'"],
45
+ [:RSQUARE, ']'],
46
+ ], @scanner)
47
+ end
48
+
49
+ def test_negation
50
+ @scanner.scan("p:not(.a)")
51
+ assert_tokens([ [:IDENT, 'p'],
52
+ [:NOT, ':not('],
53
+ ['.', '.'],
54
+ [:IDENT, 'a'],
55
+ [:RPAREN, ')'],
56
+ ], @scanner)
57
+ end
58
+
59
+ def test_function
60
+ @scanner.scan("script comment()")
61
+ assert_tokens([ [:IDENT, 'script'],
62
+ [:S, ' '],
63
+ [:FUNCTION, 'comment('],
64
+ [:RPAREN, ')'],
65
+ ], @scanner)
66
+ end
67
+
68
+ def test_preceding_selector
69
+ @scanner.scan("E ~ F")
70
+ assert_tokens([ [:IDENT, 'E'],
71
+ [:TILDE, ' ~ '],
72
+ [:IDENT, 'F'],
73
+ ], @scanner)
74
+ end
75
+
76
+ def test_scan_attribute_string
77
+ @scanner.scan("h1[a='Tender Lovemaking']")
78
+ assert_tokens([ [:IDENT, 'h1'],
79
+ [:LSQUARE, '['],
80
+ [:IDENT, 'a'],
81
+ [:EQUAL, '='],
82
+ [:STRING, "'Tender Lovemaking'"],
83
+ [:RSQUARE, ']'],
84
+ ], @scanner)
85
+ @scanner.scan('h1[a="Tender Lovemaking"]')
86
+ assert_tokens([ [:IDENT, 'h1'],
87
+ [:LSQUARE, '['],
88
+ [:IDENT, 'a'],
89
+ [:EQUAL, '='],
90
+ [:STRING, '"Tender Lovemaking"'],
91
+ [:RSQUARE, ']'],
92
+ ], @scanner)
93
+ end
94
+
95
+ def test_scan_id
96
+ @scanner.scan('#foo')
97
+ assert_tokens([ [:HASH, '#foo'] ], @scanner)
98
+ end
99
+
100
+ def test_scan_pseudo
101
+ @scanner.scan('a:visited')
102
+ assert_tokens([ [:IDENT, 'a'],
103
+ [':', ':'],
104
+ [:IDENT, 'visited']
105
+ ], @scanner)
106
+ end
107
+
108
+ def test_scan_star
109
+ @scanner.scan('*')
110
+ assert_tokens([ ['*', '*'], ], @scanner)
111
+ end
112
+
113
+ def test_scan_class
114
+ @scanner.scan('x.awesome')
115
+ assert_tokens([ [:IDENT, 'x'],
116
+ ['.', '.'],
117
+ [:IDENT, 'awesome'],
118
+ ], @scanner)
119
+ end
120
+
121
+ def test_scan_greater
122
+ @scanner.scan('x > y')
123
+ assert_tokens([ [:IDENT, 'x'],
124
+ [:GREATER, ' > '],
125
+ [:IDENT, 'y']
126
+ ], @scanner)
127
+ end
128
+
129
+ def test_scan_slash
130
+ @scanner.scan('x/y')
131
+ assert_tokens([ [:IDENT, 'x'],
132
+ [:SLASH, '/'],
133
+ [:IDENT, 'y']
134
+ ], @scanner)
135
+ end
136
+
137
+ def test_scan_doubleslash
138
+ @scanner.scan('x//y')
139
+ assert_tokens([ [:IDENT, 'x'],
140
+ [:DOUBLESLASH, '//'],
141
+ [:IDENT, 'y']
142
+ ], @scanner)
143
+ end
144
+
145
+ def test_scan_function_selector
146
+ @scanner.scan('x:eq(0)')
147
+ assert_tokens([ [:IDENT, 'x'],
148
+ [':', ':'],
149
+ [:FUNCTION, 'eq('],
150
+ [:NUMBER, "0"],
151
+ [:RPAREN, ')'],
152
+ ], @scanner)
153
+ end
154
+
155
+ def test_scan_nth
156
+ @scanner.scan('x:nth-child(5n+3)')
157
+ assert_tokens([ [:IDENT, 'x'],
158
+ [':', ':'],
159
+ [:FUNCTION, 'nth-child('],
160
+ [:NUMBER, '5'],
161
+ [:IDENT, 'n'],
162
+ [:PLUS, '+'],
163
+ [:NUMBER, '3'],
164
+ [:RPAREN, ')'],
165
+ ], @scanner)
166
+
167
+ @scanner.scan('x:nth-child(-1n+3)')
168
+ assert_tokens([ [:IDENT, 'x'],
169
+ [':', ':'],
170
+ [:FUNCTION, 'nth-child('],
171
+ [:NUMBER, '-1'],
172
+ [:IDENT, 'n'],
173
+ [:PLUS, '+'],
174
+ [:NUMBER, '3'],
175
+ [:RPAREN, ')'],
176
+ ], @scanner)
177
+
178
+ @scanner.scan('x:nth-child(-n+3)')
179
+ assert_tokens([ [:IDENT, 'x'],
180
+ [':', ':'],
181
+ [:FUNCTION, 'nth-child('],
182
+ [:IDENT, '-n'],
183
+ [:PLUS, '+'],
184
+ [:NUMBER, '3'],
185
+ [:RPAREN, ')'],
186
+ ], @scanner)
187
+ end
188
+
189
+ def assert_tokens(tokens, scanner)
190
+ toks = []
191
+ while tok = @scanner.next_token
192
+ toks << tok
193
+ end
194
+ assert_equal(tokens, toks)
195
+ end
196
+ end
197
+ end
198
+ end
@@ -0,0 +1,96 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module CSS
5
+ class TestXPathVisitor < Nokogiri::TestCase
6
+ def setup
7
+ super
8
+ @parser = Nokogiri::CSS::Parser.new
9
+ end
10
+
11
+ def test_not_simple_selector
12
+ assert_xpath('//ol/*[not(self::li)]', @parser.parse('ol > *:not(li)'))
13
+ end
14
+
15
+ def test_not_last_child
16
+ assert_xpath('//ol/*[not(count(following-sibling::*) = 0)]',
17
+ @parser.parse('ol > *:not(:last-child)'))
18
+ end
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
+
25
+ def test_function_calls_allow_at_params
26
+ assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
27
+ assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
28
+ assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)'))
29
+ end
30
+
31
+ def test_namespace_conversion
32
+ assert_xpath("//aaron:a", @parser.parse('aaron|a'))
33
+ assert_xpath("//a", @parser.parse('|a'))
34
+ end
35
+
36
+ def test_namespaced_attribute_conversion
37
+ assert_xpath("//a[@flavorjones:href]", @parser.parse('a[flavorjones|href]'))
38
+ assert_xpath("//a[@href]", @parser.parse('a[|href]'))
39
+ assert_xpath("//*[@flavorjones:href]", @parser.parse('*[flavorjones|href]'))
40
+ end
41
+
42
+ def test_unknown_psuedo_classes_get_pushed_down
43
+ assert_xpath("//a[aaron(.)]", @parser.parse('a:aaron'))
44
+ end
45
+
46
+ def test_unknown_functions_get_dot_plus_args
47
+ assert_xpath("//a[aaron(.)]", @parser.parse('a:aaron()'))
48
+ assert_xpath("//a[aaron(., 12)]", @parser.parse('a:aaron(12)'))
49
+ assert_xpath("//a[aaron(., 12, 1)]", @parser.parse('a:aaron(12, 1)'))
50
+ end
51
+
52
+ def test_class_selectors
53
+ assert_xpath "//*[contains(concat(' ', normalize-space(@class), ' '), ' red ')]",
54
+ @parser.parse(".red")
55
+ end
56
+
57
+ def test_pipe
58
+ assert_xpath "//a[@id = 'Boing' or starts-with(@id, concat('Boing', '-'))]",
59
+ @parser.parse("a[id|='Boing']")
60
+ end
61
+
62
+ def test_custom_functions
63
+ visitor = Class.new(XPathVisitor) do
64
+ attr_accessor :awesome
65
+ def visit_function_aaron node
66
+ @awesome = true
67
+ 'aaron() = 1'
68
+ end
69
+ end.new
70
+ ast = @parser.parse('a:aaron()').first
71
+ assert_equal 'a[aaron() = 1]', visitor.accept(ast)
72
+ assert visitor.awesome
73
+ end
74
+
75
+ def test_custom_psuedo_classes
76
+ visitor = Class.new(XPathVisitor) do
77
+ attr_accessor :awesome
78
+ def visit_pseudo_class_aaron node
79
+ @awesome = true
80
+ 'aaron() = 1'
81
+ end
82
+ end.new
83
+ ast = @parser.parse('a:aaron').first
84
+ assert_equal 'a[aaron() = 1]', visitor.accept(ast)
85
+ assert visitor.awesome
86
+ end
87
+
88
+ def assert_xpath expecteds, asts
89
+ expecteds = [expecteds].flatten
90
+ expecteds.zip(asts).each do |expected, actual|
91
+ assert_equal expected, actual.to_xpath
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,16 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ class TestSlop < Nokogiri::TestCase
5
+ def test_description_tag
6
+ doc = Nokogiri.Slop(<<-eoxml)
7
+ <item>
8
+ <title>foo</title>
9
+ <description>this is the foo thing</description>
10
+ </item>
11
+ eoxml
12
+ assert doc.item.title
13
+ assert doc.item._description, 'should have description'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,108 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
5
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
6
+ <meta http-equiv="Content-Style-Type" content="text/css" />
7
+ <meta name="Description" CONTENT="�u�n�b�L���O�v����u���ӂ̂������v�܂ł���L���J�o�[���鋐��f���ŒQ�w�Q�����˂�x�ւ悤�����I">
8
+ <meta name="KeyWords" CONTENT="�Q�����˂�, �f����, 2ch, BBS">
9
+ <meta name="Author" CONTENT="�Q�����˂�">
10
+ <meta name="verify-v1" content="hMevVuWJIPYrUj9ItfRJByoLNIpyhnrWaywiH+IFocU=" />
11
+ <title>�Q�����˂�f���‚ւ悤����</title>
12
+ <style type="text/css" media="all">
13
+ @import url(2ch_top.css);
14
+ </style>
15
+ <script>
16
+ <!--
17
+ function fcs(){document.f.STR.focus();}
18
+ -->
19
+ </script>
20
+ </head>
21
+
22
+ <body onLoad="document.f.STR.focus()">
23
+
24
+ <div id="wrapper">
25
+ <div id="header">
26
+ <div id="header_inside">
27
+ <div class="header_left">
28
+ <a href="http://www2.2ch.net/2ch.html"><img src="images/2ch_logo.gif" width="151" height="40" alt="�Q�����˂�" align="middle" border="0" /><a href="http://www2.2ch.net/2ch.html">�f����</a>�b
29
+ <a href="http://c.2ch.net/">imode</a>�b<a href="http://orz.2ch.io/top.html">�g��orz</a>�b<a href="http://p2.2ch.net/">�r���[�Ap2</a>
30
+ </div>
31
+
32
+ <div class="senna_banner">
33
+
34
+ <a href="http://razil.jp/product/senna/"><img src="images/senna88x31.gif" width="88" height="31" alt="Senna" align="middle" border="0" /></a>
35
+ </div>
36
+ <div class="header_right">
37
+ <!---find 2ch form --->
38
+ <form method=GET name=f action="http://find.2ch.net/" style="margin:0px">
39
+ <input size=25 name=STR value="" class="form_input">
40
+ <select name="TYPE" class="form_select">
41
+ <option value="BODY">�{��</option>
42
+
43
+ <option value="TITLE" selected>�X���b�h�^�C�g��</option>
44
+ <option value="POSTERS">���e��</option>
45
+ </select>
46
+ <input type="image" src="images/search_button.gif" alt="����" class="form_button"><br />
47
+ <input type=hidden name=BBS value=ALL>
48
+
49
+ <input type=hidden name=ENCODING value=SJIS>
50
+ <input type=hidden name=COUNT value=50>
51
+ <div class="caption">�{�������⌟���ݒ��<a href="http://find.2ch.net/moritapo/notlogin.php">���O�C��</a><a href="http://find.2ch.net/moritapo/welcome/">&raquo;�ڍ�</a></div>
52
+
53
+ </form>
54
+ </div>
55
+ </div><!--- header_inside --->
56
+ </div><!--- end of header--->
57
+
58
+ <div id="under_header">
59
+ <a href="http://newsnavi.2ch.net/">�j���[�X</a>�b<a href="http://headline.2ch.net/bbynews/">�w�b�h���C��</a>�b<a href="http://epg.2ch.net/">�e���r��</a>�b<a href="http://www.2ch.net/kakolog.html">�ߋ����O�q��</a>
60
+
61
+ </div><!--- end of under header--->
62
+
63
+ <div id="main">
64
+ <iframe src="http://cast.texpo.jp/2chtop/main_frame.html" width="100%" height="550" scrolling="no" border="0" frameborder="0"></iframe>
65
+ </div><!--- end of main--->
66
+
67
+ <div id="footer_menu">
68
+ <div class="guide">
69
+ <a href="http://info.2ch.net/guide/">�g����������</a>�b<a href="http://info.2ch.net/guide/adv.html#saku_guide">�폜�K�C�h���C��</a>�b<a href="http://www2.2ch.net/2ch2.html">�g���Ń��j���[</a>�b<a href="http://info.2ch.net/blog.html">�Ђ�䂫���L</a>�b<a href="http://www.2ch.net/ad.html">�L���̂��ē�</a>
70
+
71
+ </div>
72
+
73
+ <div class="service">
74
+ <iframe src="http://cast.texpo.jp/2chtop/moritapo_frame.html" width="100%" height="50" scrolling="no" border="0" frameborder="0"></iframe>
75
+ </div>
76
+
77
+ <div class="banner">
78
+ <a href=http://livede55.com/ target="_blank"><img
79
+ src="http://www2.livede55.com/2ch_468_60_13.gif"
80
+ width="468" height="60" border="0" alt=���C�u�`���b�g></a><br>
81
+ <br>
82
+ <A href="http://www.bb-chat.tv/" target=_blank><IMG height=60 src="http://img.bbchat.tv/images/bannar/46860-3.gif" width=468 border=0></A><br>
83
+ </div>
84
+
85
+ <div class="condition">
86
+ �Q�����˂�̂����p�͗��p�Ҋe�ʂ̂����f�ɂ��C�����Ă��܂��b<a href="precautions.html">2ch�̃f�[�^���p�ɂ‚���</a>
87
+
88
+ </div>
89
+ </div><!--- end of footer_menu--->
90
+
91
+
92
+ <div id="footer">
93
+ <div class="footer_left">
94
+ <a href="http://www.bunka.go.jp/jiyuriyo/" target="_blank">
95
+ <img src="http://www.dd.iij4u.or.jp/~cap/y_3copyok.jpg" width="184" height="31" border="0" alt="���R���p�}�[�N" /></a>
96
+ </div>
97
+
98
+ <div class="footer_right">
99
+ <a href="http://count.2ch.net/?index" target="_blank">
100
+ <img src="http://count.2ch.net/ct.php/index" width="88" height="31" border="0" alt="���������J�E���^�["></a>
101
+
102
+
103
+ </div>
104
+ </div><!---end of footer--->
105
+
106
+ </div><!--- end of wrapper--->
107
+ </body>
108
+ </html>
@@ -0,0 +1,12 @@
1
+ <element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
2
+ <oneOrMore>
3
+ <element name="card">
4
+ <element name="name">
5
+ <text/>
6
+ </element>
7
+ <element name="email">
8
+ <text/>
9
+ </element>
10
+ </element>
11
+ </oneOrMore>
12
+ </element>
@@ -0,0 +1,10 @@
1
+ <addressBook>
2
+ <card>
3
+ <name>John Smith</name>
4
+ <email>js@example.com</email>
5
+ </card>
6
+ <card>
7
+ <name>Fred Bloggs</name>
8
+ <email>fb@example.net</email>
9
+ </card>
10
+ </addressBook>
@@ -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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Updated changelog with merged pull requests #887 and #931&lt;/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&amp;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
+ &lt;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&lt;/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&amp;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
+ &lt;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&#39;t call pkg_config when using bundled libraries&lt;/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&#39;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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>extconf.rb: Don&#39;t call pkg_config when using bundled libraries&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Add support for bare and multiple :not() functions in selectors
90
+
91
+ This enables parsing of &quot;.flash:not(.error):not(.warning)&quot; and
92
+ &quot;:not(p)&quot;.
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.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Report error and stop parsing instead of silently ignoring it.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Merge pull request #930 from ctborg/master
128
+
129
+ Adds support for Solaris, OpenSolaris, or illumos.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Updated CHANGELOG with latest merged pulls&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Remove REE also.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Added support for Solaris, OpenSolaris, or illumos&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Ensure meta_encoding checks meta charset tag (closes #919)&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Updated ROADMAP&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Merge pull request #858 from ykzts/feature/not-only-child
226
+
227
+ Add feature that the &#39;:only-child&#39; pseudo class should work even though it&#39;s in &#39;:not&#39; pseudo class.&lt;/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&amp;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
+ &lt;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&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Note 1.8 deprecation in README&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Fix a typo and DRY with dir_config() calls.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Iconv was for building libxml2 and not for nokogiri itself.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Make sure the MRI gem is built correctly.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>Fiddling with the windows cross-compile gem logic.&lt;/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&amp;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
+ &lt;pre style='white-space:pre-wrap;width:81ex'>build_all now uses ruby 1.9.3 to build everything.&lt;/pre>
342
+ </content>
343
+ </entry>
344
+ </feed>