nokogiri 1.2.3-x86-mswin32-60 → 1.4.5-x86-mswin32-60

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 (319) hide show
  1. data/.autotest +18 -7
  2. data/.gemtest +0 -0
  3. data/CHANGELOG.ja.rdoc +297 -3
  4. data/CHANGELOG.rdoc +289 -0
  5. data/Manifest.txt +148 -37
  6. data/README.ja.rdoc +20 -20
  7. data/README.rdoc +53 -22
  8. data/Rakefile +127 -211
  9. data/bin/nokogiri +54 -0
  10. data/ext/nokogiri/depend +358 -0
  11. data/ext/nokogiri/extconf.rb +89 -54
  12. data/ext/nokogiri/html_document.c +34 -27
  13. data/ext/nokogiri/html_document.h +1 -1
  14. data/ext/nokogiri/html_element_description.c +276 -0
  15. data/ext/nokogiri/html_element_description.h +10 -0
  16. data/ext/nokogiri/html_entity_lookup.c +7 -5
  17. data/ext/nokogiri/html_entity_lookup.h +1 -1
  18. data/ext/nokogiri/html_sax_parser_context.c +94 -0
  19. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  20. data/ext/nokogiri/{native.c → nokogiri.c} +31 -7
  21. data/ext/nokogiri/{native.h → nokogiri.h} +68 -41
  22. data/ext/nokogiri/xml_attr.c +20 -9
  23. data/ext/nokogiri/xml_attr.h +1 -1
  24. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  25. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  26. data/ext/nokogiri/xml_cdata.c +21 -9
  27. data/ext/nokogiri/xml_cdata.h +1 -1
  28. data/ext/nokogiri/xml_comment.c +18 -6
  29. data/ext/nokogiri/xml_comment.h +1 -1
  30. data/ext/nokogiri/xml_document.c +247 -68
  31. data/ext/nokogiri/xml_document.h +5 -3
  32. data/ext/nokogiri/xml_document_fragment.c +15 -7
  33. data/ext/nokogiri/xml_document_fragment.h +1 -1
  34. data/ext/nokogiri/xml_dtd.c +110 -10
  35. data/ext/nokogiri/xml_dtd.h +3 -1
  36. data/ext/nokogiri/xml_element_content.c +123 -0
  37. data/ext/nokogiri/xml_element_content.h +10 -0
  38. data/ext/nokogiri/xml_element_decl.c +69 -0
  39. data/ext/nokogiri/xml_element_decl.h +9 -0
  40. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  41. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  42. data/ext/nokogiri/xml_entity_decl.c +110 -0
  43. data/ext/nokogiri/xml_entity_decl.h +10 -0
  44. data/ext/nokogiri/xml_entity_reference.c +16 -5
  45. data/ext/nokogiri/xml_entity_reference.h +1 -1
  46. data/ext/nokogiri/xml_io.c +40 -8
  47. data/ext/nokogiri/xml_io.h +2 -1
  48. data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  49. data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  50. data/ext/nokogiri/xml_namespace.c +84 -0
  51. data/ext/nokogiri/xml_namespace.h +13 -0
  52. data/ext/nokogiri/xml_node.c +782 -225
  53. data/ext/nokogiri/xml_node.h +2 -4
  54. data/ext/nokogiri/xml_node_set.c +253 -34
  55. data/ext/nokogiri/xml_node_set.h +2 -2
  56. data/ext/nokogiri/xml_processing_instruction.c +17 -5
  57. data/ext/nokogiri/xml_processing_instruction.h +1 -1
  58. data/ext/nokogiri/xml_reader.c +277 -85
  59. data/ext/nokogiri/xml_reader.h +1 -1
  60. data/ext/nokogiri/xml_relax_ng.c +168 -0
  61. data/ext/nokogiri/xml_relax_ng.h +9 -0
  62. data/ext/nokogiri/xml_sax_parser.c +183 -111
  63. data/ext/nokogiri/xml_sax_parser.h +30 -1
  64. data/ext/nokogiri/xml_sax_parser_context.c +199 -0
  65. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  66. data/ext/nokogiri/xml_sax_push_parser.c +42 -12
  67. data/ext/nokogiri/xml_sax_push_parser.h +1 -1
  68. data/ext/nokogiri/xml_schema.c +205 -0
  69. data/ext/nokogiri/xml_schema.h +9 -0
  70. data/ext/nokogiri/xml_syntax_error.c +28 -173
  71. data/ext/nokogiri/xml_syntax_error.h +2 -1
  72. data/ext/nokogiri/xml_text.c +16 -6
  73. data/ext/nokogiri/xml_text.h +1 -1
  74. data/ext/nokogiri/xml_xpath_context.c +104 -47
  75. data/ext/nokogiri/xml_xpath_context.h +1 -1
  76. data/ext/nokogiri/xslt_stylesheet.c +161 -19
  77. data/ext/nokogiri/xslt_stylesheet.h +1 -1
  78. data/lib/nokogiri.rb +47 -8
  79. data/lib/nokogiri/1.8/nokogiri.so +0 -0
  80. data/lib/nokogiri/1.9/nokogiri.so +0 -0
  81. data/lib/nokogiri/css.rb +6 -3
  82. data/lib/nokogiri/css/node.rb +14 -12
  83. data/lib/nokogiri/css/parser.rb +665 -62
  84. data/lib/nokogiri/css/parser.y +20 -10
  85. data/lib/nokogiri/css/parser_extras.rb +91 -0
  86. data/lib/nokogiri/css/tokenizer.rb +148 -5
  87. data/lib/nokogiri/css/tokenizer.rex +10 -9
  88. data/lib/nokogiri/css/xpath_visitor.rb +47 -44
  89. data/lib/nokogiri/decorators/slop.rb +8 -4
  90. data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
  91. data/lib/nokogiri/ffi/html/document.rb +28 -0
  92. data/lib/nokogiri/ffi/html/element_description.rb +81 -0
  93. data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
  94. data/lib/nokogiri/ffi/html/sax/parser_context.rb +38 -0
  95. data/lib/nokogiri/ffi/io_callbacks.rb +42 -0
  96. data/lib/nokogiri/ffi/libxml.rb +420 -0
  97. data/lib/nokogiri/ffi/structs/common_node.rb +38 -0
  98. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
  99. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
  100. data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
  101. data/lib/nokogiri/ffi/structs/xml_attr.rb +20 -0
  102. data/lib/nokogiri/ffi/structs/xml_attribute.rb +27 -0
  103. data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
  104. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
  105. data/lib/nokogiri/ffi/structs/xml_document.rb +117 -0
  106. data/lib/nokogiri/ffi/structs/xml_dtd.rb +28 -0
  107. data/lib/nokogiri/ffi/structs/xml_element.rb +26 -0
  108. data/lib/nokogiri/ffi/structs/xml_element_content.rb +17 -0
  109. data/lib/nokogiri/ffi/structs/xml_entity.rb +32 -0
  110. data/lib/nokogiri/ffi/structs/xml_enumeration.rb +12 -0
  111. data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
  112. data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
  113. data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
  114. data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
  115. data/lib/nokogiri/ffi/structs/xml_parser_context.rb +20 -0
  116. data/lib/nokogiri/ffi/structs/xml_parser_input.rb +19 -0
  117. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
  118. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
  119. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +124 -0
  120. data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
  121. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
  122. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
  123. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +38 -0
  124. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
  125. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
  126. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
  127. data/lib/nokogiri/ffi/weak_bucket.rb +40 -0
  128. data/lib/nokogiri/ffi/xml/attr.rb +41 -0
  129. data/lib/nokogiri/ffi/xml/attribute_decl.rb +27 -0
  130. data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
  131. data/lib/nokogiri/ffi/xml/comment.rb +18 -0
  132. data/lib/nokogiri/ffi/xml/document.rb +174 -0
  133. data/lib/nokogiri/ffi/xml/document_fragment.rb +21 -0
  134. data/lib/nokogiri/ffi/xml/dtd.rb +67 -0
  135. data/lib/nokogiri/ffi/xml/element_content.rb +43 -0
  136. data/lib/nokogiri/ffi/xml/element_decl.rb +19 -0
  137. data/lib/nokogiri/ffi/xml/entity_decl.rb +36 -0
  138. data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
  139. data/lib/nokogiri/ffi/xml/namespace.rb +44 -0
  140. data/lib/nokogiri/ffi/xml/node.rb +559 -0
  141. data/lib/nokogiri/ffi/xml/node_set.rb +150 -0
  142. data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
  143. data/lib/nokogiri/ffi/xml/reader.rb +236 -0
  144. data/lib/nokogiri/ffi/xml/relax_ng.rb +85 -0
  145. data/lib/nokogiri/ffi/xml/sax/parser.rb +143 -0
  146. data/lib/nokogiri/ffi/xml/sax/parser_context.rb +79 -0
  147. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +51 -0
  148. data/lib/nokogiri/ffi/xml/schema.rb +109 -0
  149. data/lib/nokogiri/ffi/xml/syntax_error.rb +98 -0
  150. data/lib/nokogiri/ffi/xml/text.rb +18 -0
  151. data/lib/nokogiri/ffi/xml/xpath.rb +9 -0
  152. data/lib/nokogiri/ffi/xml/xpath_context.rb +153 -0
  153. data/lib/nokogiri/ffi/xslt/stylesheet.rb +77 -0
  154. data/lib/nokogiri/html.rb +13 -47
  155. data/lib/nokogiri/html/builder.rb +27 -1
  156. data/lib/nokogiri/html/document.rb +201 -7
  157. data/lib/nokogiri/html/document_fragment.rb +41 -0
  158. data/lib/nokogiri/html/element_description.rb +23 -0
  159. data/lib/nokogiri/html/entity_lookup.rb +2 -0
  160. data/lib/nokogiri/html/sax/parser.rb +34 -3
  161. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  162. data/lib/nokogiri/nokogiri.rb +1 -0
  163. data/lib/nokogiri/version.rb +40 -1
  164. data/lib/nokogiri/version_warning.rb +14 -0
  165. data/lib/nokogiri/xml.rb +32 -53
  166. data/lib/nokogiri/xml/attr.rb +5 -0
  167. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  168. data/lib/nokogiri/xml/builder.rb +349 -29
  169. data/lib/nokogiri/xml/cdata.rb +3 -1
  170. data/lib/nokogiri/xml/character_data.rb +7 -0
  171. data/lib/nokogiri/xml/document.rb +166 -14
  172. data/lib/nokogiri/xml/document_fragment.rb +76 -1
  173. data/lib/nokogiri/xml/dtd.rb +16 -3
  174. data/lib/nokogiri/xml/element_content.rb +36 -0
  175. data/lib/nokogiri/xml/element_decl.rb +13 -0
  176. data/lib/nokogiri/xml/entity_decl.rb +19 -0
  177. data/lib/nokogiri/xml/namespace.rb +13 -0
  178. data/lib/nokogiri/xml/node.rb +561 -166
  179. data/lib/nokogiri/xml/node/save_options.rb +22 -2
  180. data/lib/nokogiri/xml/node_set.rb +202 -40
  181. data/lib/nokogiri/xml/parse_options.rb +93 -0
  182. data/lib/nokogiri/xml/pp.rb +2 -0
  183. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  184. data/lib/nokogiri/xml/pp/node.rb +56 -0
  185. data/lib/nokogiri/xml/processing_instruction.rb +2 -0
  186. data/lib/nokogiri/xml/reader.rb +93 -8
  187. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  188. data/lib/nokogiri/xml/sax.rb +1 -7
  189. data/lib/nokogiri/xml/sax/document.rb +107 -2
  190. data/lib/nokogiri/xml/sax/parser.rb +57 -7
  191. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  192. data/lib/nokogiri/xml/sax/push_parser.rb +13 -1
  193. data/lib/nokogiri/xml/schema.rb +63 -0
  194. data/lib/nokogiri/xml/syntax_error.rb +25 -1
  195. data/lib/nokogiri/xml/text.rb +4 -1
  196. data/lib/nokogiri/xml/xpath.rb +1 -1
  197. data/lib/nokogiri/xml/xpath/syntax_error.rb +3 -0
  198. data/lib/nokogiri/xml/xpath_context.rb +2 -0
  199. data/lib/nokogiri/xslt.rb +26 -2
  200. data/lib/nokogiri/xslt/stylesheet.rb +19 -0
  201. data/lib/xsd/xmlparser/nokogiri.rb +45 -9
  202. data/tasks/cross_compile.rb +173 -0
  203. data/tasks/test.rb +25 -69
  204. data/test/css/test_nthiness.rb +3 -4
  205. data/test/css/test_parser.rb +75 -20
  206. data/test/css/test_tokenizer.rb +23 -1
  207. data/test/css/test_xpath_visitor.rb +10 -1
  208. data/test/decorators/test_slop.rb +16 -0
  209. data/test/ffi/test_document.rb +35 -0
  210. data/test/files/2ch.html +108 -0
  211. data/test/files/address_book.rlx +12 -0
  212. data/test/files/address_book.xml +10 -0
  213. data/test/files/bar/bar.xsd +4 -0
  214. data/test/files/encoding.html +82 -0
  215. data/test/files/encoding.xhtml +84 -0
  216. data/test/files/foo/foo.xsd +4 -0
  217. data/test/files/po.xml +32 -0
  218. data/test/files/po.xsd +66 -0
  219. data/test/files/shift_jis.html +10 -0
  220. data/test/files/shift_jis.xml +5 -0
  221. data/test/files/snuggles.xml +3 -0
  222. data/test/files/staff.dtd +10 -0
  223. data/test/files/valid_bar.xml +2 -0
  224. data/test/helper.rb +101 -23
  225. data/test/html/sax/test_parser.rb +81 -2
  226. data/test/html/sax/test_parser_context.rb +48 -0
  227. data/test/html/test_builder.rb +39 -8
  228. data/test/html/test_document.rb +186 -23
  229. data/test/html/test_document_encoding.rb +78 -1
  230. data/test/html/test_document_fragment.rb +253 -0
  231. data/test/html/test_element_description.rb +98 -0
  232. data/test/html/test_named_characters.rb +1 -1
  233. data/test/html/test_node.rb +124 -36
  234. data/test/html/test_node_encoding.rb +27 -0
  235. data/test/test_convert_xpath.rb +1 -52
  236. data/test/test_css_cache.rb +2 -13
  237. data/test/test_encoding_handler.rb +46 -0
  238. data/test/test_memory_leak.rb +88 -19
  239. data/test/test_nokogiri.rb +38 -5
  240. data/test/test_reader.rb +188 -6
  241. data/test/test_soap4r_sax.rb +52 -0
  242. data/test/test_xslt_transforms.rb +183 -83
  243. data/test/xml/node/test_save_options.rb +1 -1
  244. data/test/xml/node/test_subclass.rb +44 -0
  245. data/test/xml/sax/test_parser.rb +175 -4
  246. data/test/xml/sax/test_parser_context.rb +113 -0
  247. data/test/xml/sax/test_push_parser.rb +90 -2
  248. data/test/xml/test_attr.rb +35 -1
  249. data/test/xml/test_attribute_decl.rb +82 -0
  250. data/test/xml/test_builder.rb +186 -1
  251. data/test/xml/test_cdata.rb +32 -1
  252. data/test/xml/test_comment.rb +13 -1
  253. data/test/xml/test_document.rb +415 -43
  254. data/test/xml/test_document_encoding.rb +1 -1
  255. data/test/xml/test_document_fragment.rb +173 -5
  256. data/test/xml/test_dtd.rb +61 -6
  257. data/test/xml/test_dtd_encoding.rb +3 -1
  258. data/test/xml/test_element_content.rb +56 -0
  259. data/test/xml/test_element_decl.rb +73 -0
  260. data/test/xml/test_entity_decl.rb +120 -0
  261. data/test/xml/test_entity_reference.rb +5 -1
  262. data/test/xml/test_namespace.rb +68 -0
  263. data/test/xml/test_node.rb +546 -201
  264. data/test/xml/test_node_attributes.rb +34 -0
  265. data/test/xml/test_node_encoding.rb +33 -3
  266. data/test/xml/test_node_reparenting.rb +321 -0
  267. data/test/xml/test_node_set.rb +538 -2
  268. data/test/xml/test_parse_options.rb +52 -0
  269. data/test/xml/test_processing_instruction.rb +6 -1
  270. data/test/xml/test_reader_encoding.rb +1 -1
  271. data/test/xml/test_relax_ng.rb +60 -0
  272. data/test/xml/test_schema.rb +94 -0
  273. data/test/xml/test_syntax_error.rb +12 -0
  274. data/test/xml/test_text.rb +35 -1
  275. data/test/xml/test_unparented_node.rb +5 -5
  276. data/test/xml/test_xpath.rb +142 -11
  277. data/test/xslt/test_custom_functions.rb +94 -0
  278. metadata +328 -92
  279. data/ext/nokogiri/html_sax_parser.c +0 -57
  280. data/ext/nokogiri/html_sax_parser.h +0 -11
  281. data/ext/nokogiri/iconv.dll +0 -0
  282. data/ext/nokogiri/libexslt.dll +0 -0
  283. data/ext/nokogiri/libxml2.dll +0 -0
  284. data/ext/nokogiri/libxslt.dll +0 -0
  285. data/ext/nokogiri/native.so +0 -0
  286. data/ext/nokogiri/xml_xpath.c +0 -53
  287. data/ext/nokogiri/xml_xpath.h +0 -11
  288. data/ext/nokogiri/zlib1.dll +0 -0
  289. data/lib/action-nokogiri.rb +0 -30
  290. data/lib/nokogiri/css/generated_parser.rb +0 -713
  291. data/lib/nokogiri/css/generated_tokenizer.rb +0 -144
  292. data/lib/nokogiri/decorators.rb +0 -2
  293. data/lib/nokogiri/decorators/hpricot.rb +0 -3
  294. data/lib/nokogiri/decorators/hpricot/node.rb +0 -56
  295. data/lib/nokogiri/decorators/hpricot/node_set.rb +0 -54
  296. data/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +0 -28
  297. data/lib/nokogiri/hpricot.rb +0 -51
  298. data/lib/nokogiri/xml/comment.rb +0 -6
  299. data/lib/nokogiri/xml/element.rb +0 -6
  300. data/lib/nokogiri/xml/entity_declaration.rb +0 -9
  301. data/lib/nokogiri/xml/fragment_handler.rb +0 -34
  302. data/test/hpricot/files/basic.xhtml +0 -17
  303. data/test/hpricot/files/boingboing.html +0 -2266
  304. data/test/hpricot/files/cy0.html +0 -3653
  305. data/test/hpricot/files/immob.html +0 -400
  306. data/test/hpricot/files/pace_application.html +0 -1320
  307. data/test/hpricot/files/tenderlove.html +0 -16
  308. data/test/hpricot/files/uswebgen.html +0 -220
  309. data/test/hpricot/files/utf8.html +0 -1054
  310. data/test/hpricot/files/week9.html +0 -1723
  311. data/test/hpricot/files/why.xml +0 -19
  312. data/test/hpricot/load_files.rb +0 -11
  313. data/test/hpricot/test_alter.rb +0 -68
  314. data/test/hpricot/test_builder.rb +0 -20
  315. data/test/hpricot/test_parser.rb +0 -426
  316. data/test/hpricot/test_paths.rb +0 -15
  317. data/test/hpricot/test_preserved.rb +0 -77
  318. data/test/hpricot/test_xml.rb +0 -30
  319. data/test/test_gc.rb +0 -15
@@ -1,74 +1,677 @@
1
- require 'thread'
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.4.6
4
+ # from Racc grammer file "".
5
+ #
2
6
 
7
+ require 'racc/parser.rb'
8
+
9
+
10
+ require 'nokogiri/css/parser_extras'
3
11
  module Nokogiri
4
12
  module CSS
5
- class Parser < GeneratedTokenizer
6
- @cache_on = true
7
- @cache = {}
8
- @mutex = Mutex.new
9
-
10
- class << self
11
- attr_accessor :cache_on
12
- alias :cache_on? :cache_on
13
- alias :set_cache :cache_on=
14
-
15
- def [] string
16
- return unless @cache_on
17
- @mutex.synchronize { @cache[string] }
18
- end
13
+ class Parser < Racc::Parser
14
+ ##### State transition tables begin ###
15
+
16
+ racc_action_table = [
17
+ 4, 56, 27, 22, 12, 24, 57, 4, 65, 1,
18
+ 41, 12, 75, 57, 4, 23, 1, 82, 12, 19,
19
+ 93, 92, 5, 1, 9, 10, 19, 13, 16, 5,
20
+ 12, 9, 10, 19, 13, 16, 5, 5, 9, 10,
21
+ 4, 13, 16, 16, 12, 41, 64, 4, 5, 1,
22
+ 60, 10, 12, 59, 16, 59, 28, 1, 29, 19,
23
+ 12, 12, 5, 62, 9, 10, 19, 13, 16, 12,
24
+ 5, 9, 83, 10, 12, 13, 16, 84, 5, 5,
25
+ 63, 10, 10, 12, 16, 16, 58, 5, 61, 62,
26
+ 10, 4, 5, 16, 87, 10, 27, 53, 16, 54,
27
+ 49, 5, 88, 41, 10, 68, 70, 16, 27, 53,
28
+ 19, 54, 44, 91, 21, 9, 69, 71, 72, 94,
29
+ 74, 68, 70, -23, 66, 33, 35, 37, 27, 53,
30
+ 96, 54, 69, 71, 72, 32, 74, 34, 36, 97,
31
+ 66, 27, 53, nil, 54 ]
32
+
33
+ racc_action_check = [
34
+ 0, 20, 4, 4, 0, 4, 43, 9, 27, 0,
35
+ 39, 9, 29, 20, 31, 4, 9, 43, 31, 0,
36
+ 73, 73, 0, 31, 0, 0, 9, 0, 0, 9,
37
+ 7, 9, 9, 31, 9, 9, 31, 14, 31, 31,
38
+ 57, 31, 31, 14, 57, 7, 26, 5, 7, 57,
39
+ 22, 7, 41, 53, 7, 22, 5, 41, 5, 57,
40
+ 8, 79, 57, 54, 57, 57, 5, 57, 57, 18,
41
+ 41, 5, 55, 41, 17, 41, 41, 56, 8, 79,
42
+ 25, 8, 79, 15, 8, 79, 21, 18, 24, 24,
43
+ 18, 16, 17, 18, 60, 17, 59, 59, 17, 59,
44
+ 16, 15, 61, 11, 15, 30, 30, 15, 19, 19,
45
+ 16, 19, 10, 67, 2, 16, 30, 30, 30, 76,
46
+ 30, 28, 28, 1, 30, 6, 6, 6, 62, 62,
47
+ 81, 62, 28, 28, 28, 6, 28, 6, 6, 88,
48
+ 28, 65, 65, nil, 65 ]
49
+
50
+ racc_action_pointer = [
51
+ -2, 95, 86, nil, -8, 45, 118, 24, 54, 5,
52
+ 101, 82, nil, nil, 13, 77, 89, 68, 63, 98,
53
+ 1, 75, 43, nil, 77, 57, 23, -4, 118, -13,
54
+ 102, 12, nil, nil, nil, nil, nil, nil, nil, -11,
55
+ nil, 46, nil, -6, nil, nil, nil, nil, nil, nil,
56
+ nil, nil, nil, 41, 51, 49, 77, 38, nil, 86,
57
+ 81, 95, 118, nil, nil, 131, nil, 88, nil, nil,
58
+ nil, nil, nil, 10, nil, nil, 94, nil, nil, 55,
59
+ nil, 107, nil, nil, nil, nil, nil, nil, 126, nil,
60
+ nil, nil, nil, nil, nil, nil, nil, nil ]
61
+
62
+ racc_action_default = [
63
+ -24, -21, -69, -2, -69, -69, -18, -45, -50, -24,
64
+ -69, -16, -54, -22, -12, -53, -69, -52, -51, -69,
65
+ -69, -69, -38, -28, -36, -69, -69, -37, -57, -69,
66
+ -57, -24, -5, -3, -8, -4, -7, -6, -9, -44,
67
+ -11, -24, -46, -69, -19, -15, -13, -14, -49, -43,
68
+ -42, -48, -47, -38, -36, -69, -69, -24, -20, -69,
69
+ -69, -41, -69, -29, -30, -69, -58, -69, -63, -59,
70
+ -64, -60, -61, -69, -62, -27, -69, -17, -10, -66,
71
+ -68, -69, -32, -31, 98, -1, -35, -40, -69, -33,
72
+ -34, -25, -55, -56, -26, -67, -65, -39 ]
73
+
74
+ racc_goto_table = [
75
+ 39, 42, 25, 40, 77, 30, 20, 45, 48, 79,
76
+ 51, 52, 67, 46, 76, 43, 50, 55, 47, 38,
77
+ 31, 26, 81, nil, nil, nil, nil, nil, nil, nil,
78
+ 85, nil, nil, nil, 80, 78, nil, nil, nil, nil,
79
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
80
+ nil, nil, nil, nil, nil, nil, nil, 86, nil, nil,
81
+ 89, nil, nil, 90, nil, nil, nil, nil, nil, nil,
82
+ nil, nil, 95 ]
83
+
84
+ racc_goto_check = [
85
+ 7, 7, 15, 8, 2, 9, 1, 8, 7, 5,
86
+ 7, 7, 14, 10, 14, 1, 9, 15, 11, 6,
87
+ 3, 16, 19, nil, nil, nil, nil, nil, nil, nil,
88
+ 2, nil, nil, nil, 7, 8, nil, nil, nil, nil,
89
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
90
+ nil, nil, nil, nil, nil, nil, nil, 15, nil, nil,
91
+ 15, nil, nil, 15, nil, nil, nil, nil, nil, nil,
92
+ nil, nil, 7 ]
93
+
94
+ racc_goto_pointer = [
95
+ nil, 6, -27, 14, nil, -32, 12, -7, -4, 0,
96
+ -1, 4, nil, nil, -16, -2, 17, nil, nil, -19 ]
97
+
98
+ racc_goto_default = [
99
+ nil, nil, 3, nil, 6, 7, nil, 11, nil, 14,
100
+ 15, 17, 18, 2, nil, nil, nil, 8, 73, nil ]
101
+
102
+ racc_reduce_table = [
103
+ 0, 0, :racc_error,
104
+ 3, 32, :_reduce_1,
105
+ 1, 32, :_reduce_2,
106
+ 1, 34, :_reduce_3,
107
+ 1, 34, :_reduce_4,
108
+ 1, 34, :_reduce_5,
109
+ 1, 34, :_reduce_6,
110
+ 1, 34, :_reduce_7,
111
+ 1, 34, :_reduce_8,
112
+ 2, 35, :_reduce_9,
113
+ 3, 35, :_reduce_10,
114
+ 2, 35, :_reduce_11,
115
+ 1, 35, :_reduce_none,
116
+ 2, 35, :_reduce_13,
117
+ 2, 35, :_reduce_14,
118
+ 2, 35, :_reduce_15,
119
+ 1, 35, :_reduce_16,
120
+ 3, 33, :_reduce_17,
121
+ 1, 33, :_reduce_none,
122
+ 2, 43, :_reduce_19,
123
+ 3, 36, :_reduce_20,
124
+ 1, 36, :_reduce_21,
125
+ 1, 36, :_reduce_22,
126
+ 1, 44, :_reduce_23,
127
+ 0, 44, :_reduce_none,
128
+ 4, 42, :_reduce_25,
129
+ 4, 42, :_reduce_26,
130
+ 3, 42, :_reduce_27,
131
+ 2, 40, :_reduce_28,
132
+ 3, 40, :_reduce_29,
133
+ 3, 40, :_reduce_30,
134
+ 3, 40, :_reduce_31,
135
+ 3, 40, :_reduce_32,
136
+ 3, 46, :_reduce_33,
137
+ 3, 46, :_reduce_34,
138
+ 3, 46, :_reduce_35,
139
+ 1, 46, :_reduce_none,
140
+ 1, 46, :_reduce_none,
141
+ 1, 46, :_reduce_38,
142
+ 4, 47, :_reduce_39,
143
+ 3, 47, :_reduce_40,
144
+ 2, 47, :_reduce_41,
145
+ 2, 41, :_reduce_42,
146
+ 2, 41, :_reduce_43,
147
+ 1, 37, :_reduce_none,
148
+ 0, 37, :_reduce_none,
149
+ 2, 38, :_reduce_46,
150
+ 2, 38, :_reduce_47,
151
+ 2, 38, :_reduce_48,
152
+ 2, 38, :_reduce_49,
153
+ 1, 38, :_reduce_none,
154
+ 1, 38, :_reduce_none,
155
+ 1, 38, :_reduce_none,
156
+ 1, 38, :_reduce_none,
157
+ 1, 48, :_reduce_54,
158
+ 2, 45, :_reduce_55,
159
+ 2, 45, :_reduce_56,
160
+ 0, 45, :_reduce_none,
161
+ 1, 49, :_reduce_58,
162
+ 1, 49, :_reduce_59,
163
+ 1, 49, :_reduce_60,
164
+ 1, 49, :_reduce_61,
165
+ 1, 49, :_reduce_62,
166
+ 1, 49, :_reduce_63,
167
+ 1, 49, :_reduce_64,
168
+ 3, 39, :_reduce_65,
169
+ 1, 50, :_reduce_none,
170
+ 2, 50, :_reduce_none,
171
+ 1, 50, :_reduce_none ]
172
+
173
+ racc_reduce_n = 69
174
+
175
+ racc_shift_n = 98
176
+
177
+ racc_token_table = {
178
+ false => 0,
179
+ :error => 1,
180
+ :FUNCTION => 2,
181
+ :INCLUDES => 3,
182
+ :DASHMATCH => 4,
183
+ :LBRACE => 5,
184
+ :HASH => 6,
185
+ :PLUS => 7,
186
+ :GREATER => 8,
187
+ :S => 9,
188
+ :STRING => 10,
189
+ :IDENT => 11,
190
+ :COMMA => 12,
191
+ :NUMBER => 13,
192
+ :PREFIXMATCH => 14,
193
+ :SUFFIXMATCH => 15,
194
+ :SUBSTRINGMATCH => 16,
195
+ :TILDE => 17,
196
+ :NOT_EQUAL => 18,
197
+ :SLASH => 19,
198
+ :DOUBLESLASH => 20,
199
+ :NOT => 21,
200
+ :EQUAL => 22,
201
+ :RPAREN => 23,
202
+ :LSQUARE => 24,
203
+ :RSQUARE => 25,
204
+ :HAS => 26,
205
+ "." => 27,
206
+ "|" => 28,
207
+ "*" => 29,
208
+ ":" => 30 }
209
+
210
+ racc_nt_base = 31
211
+
212
+ racc_use_result_var = true
213
+
214
+ Racc_arg = [
215
+ racc_action_table,
216
+ racc_action_check,
217
+ racc_action_default,
218
+ racc_action_pointer,
219
+ racc_goto_table,
220
+ racc_goto_check,
221
+ racc_goto_default,
222
+ racc_goto_pointer,
223
+ racc_nt_base,
224
+ racc_reduce_table,
225
+ racc_token_table,
226
+ racc_shift_n,
227
+ racc_reduce_n,
228
+ racc_use_result_var ]
229
+
230
+ Racc_token_to_s_table = [
231
+ "$end",
232
+ "error",
233
+ "FUNCTION",
234
+ "INCLUDES",
235
+ "DASHMATCH",
236
+ "LBRACE",
237
+ "HASH",
238
+ "PLUS",
239
+ "GREATER",
240
+ "S",
241
+ "STRING",
242
+ "IDENT",
243
+ "COMMA",
244
+ "NUMBER",
245
+ "PREFIXMATCH",
246
+ "SUFFIXMATCH",
247
+ "SUBSTRINGMATCH",
248
+ "TILDE",
249
+ "NOT_EQUAL",
250
+ "SLASH",
251
+ "DOUBLESLASH",
252
+ "NOT",
253
+ "EQUAL",
254
+ "RPAREN",
255
+ "LSQUARE",
256
+ "RSQUARE",
257
+ "HAS",
258
+ "\".\"",
259
+ "\"|\"",
260
+ "\"*\"",
261
+ "\":\"",
262
+ "$start",
263
+ "selector",
264
+ "simple_selector_1toN",
265
+ "combinator",
266
+ "simple_selector",
267
+ "element_name",
268
+ "hcap_0toN",
269
+ "hcap_1toN",
270
+ "negation",
271
+ "function",
272
+ "pseudo",
273
+ "attrib",
274
+ "class",
275
+ "namespace",
276
+ "attrib_val_0or1",
277
+ "expr",
278
+ "an_plus_b",
279
+ "attribute_id",
280
+ "eql_incl_dash",
281
+ "negation_arg" ]
282
+
283
+ Racc_debug_parser = false
284
+
285
+ ##### State transition tables end #####
286
+
287
+ # reduce 0 omitted
288
+
289
+ def _reduce_1(val, _values, result)
290
+ result = [val.first, val.last].flatten
291
+
292
+ result
293
+ end
294
+
295
+ def _reduce_2(val, _values, result)
296
+ result = val.flatten
297
+ result
298
+ end
299
+
300
+ def _reduce_3(val, _values, result)
301
+ result = :DIRECT_ADJACENT_SELECTOR
302
+ result
303
+ end
304
+
305
+ def _reduce_4(val, _values, result)
306
+ result = :CHILD_SELECTOR
307
+ result
308
+ end
309
+
310
+ def _reduce_5(val, _values, result)
311
+ result = :PRECEDING_SELECTOR
312
+ result
313
+ end
314
+
315
+ def _reduce_6(val, _values, result)
316
+ result = :DESCENDANT_SELECTOR
317
+ result
318
+ end
319
+
320
+ def _reduce_7(val, _values, result)
321
+ result = :DESCENDANT_SELECTOR
322
+ result
323
+ end
324
+
325
+ def _reduce_8(val, _values, result)
326
+ result = :CHILD_SELECTOR
327
+ result
328
+ end
329
+
330
+ def _reduce_9(val, _values, result)
331
+ result = if val[1].nil?
332
+ val.first
333
+ else
334
+ Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]])
335
+ end
336
+
337
+ result
338
+ end
339
+
340
+ def _reduce_10(val, _values, result)
341
+ result = Node.new(:CONDITIONAL_SELECTOR,
342
+ [
343
+ val.first,
344
+ Node.new(:COMBINATOR, [val[1], val.last])
345
+ ]
346
+ )
347
+
348
+ result
349
+ end
350
+
351
+ def _reduce_11(val, _values, result)
352
+ result = Node.new(:CONDITIONAL_SELECTOR, val)
353
+
354
+ result
355
+ end
356
+
357
+ # reduce 12 omitted
358
+
359
+ def _reduce_13(val, _values, result)
360
+ result = Node.new(:CONDITIONAL_SELECTOR, val)
361
+
362
+ result
363
+ end
364
+
365
+ def _reduce_14(val, _values, result)
366
+ result = Node.new(:CONDITIONAL_SELECTOR, val)
367
+
368
+ result
369
+ end
370
+
371
+ def _reduce_15(val, _values, result)
372
+ result = Node.new(:CONDITIONAL_SELECTOR,
373
+ [
374
+ Node.new(:ELEMENT_NAME, ['*']),
375
+ Node.new(:COMBINATOR, val)
376
+ ]
377
+ )
378
+
379
+ result
380
+ end
381
+
382
+ def _reduce_16(val, _values, result)
383
+ result = Node.new(:CONDITIONAL_SELECTOR,
384
+ [Node.new(:ELEMENT_NAME, ['*']), val.first]
385
+ )
386
+
387
+ result
388
+ end
389
+
390
+ def _reduce_17(val, _values, result)
391
+ result = Node.new(val[1], [val.first, val.last])
392
+
393
+ result
394
+ end
395
+
396
+ # reduce 18 omitted
397
+
398
+ def _reduce_19(val, _values, result)
399
+ result = Node.new(:CLASS_CONDITION, [val[1]])
400
+ result
401
+ end
402
+
403
+ def _reduce_20(val, _values, result)
404
+ result = Node.new(:ELEMENT_NAME,
405
+ [[val.first, val.last].compact.join(':')]
406
+ )
407
+
408
+ result
409
+ end
410
+
411
+ def _reduce_21(val, _values, result)
412
+ name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first
413
+ result = Node.new(:ELEMENT_NAME, [name])
414
+
415
+ result
416
+ end
417
+
418
+ def _reduce_22(val, _values, result)
419
+ result = Node.new(:ELEMENT_NAME, val)
420
+ result
421
+ end
422
+
423
+ def _reduce_23(val, _values, result)
424
+ result = val[0]
425
+ result
426
+ end
427
+
428
+ # reduce 24 omitted
429
+
430
+ def _reduce_25(val, _values, result)
431
+ result = Node.new(:ATTRIBUTE_CONDITION,
432
+ [Node.new(:ELEMENT_NAME, [val[1]])] + (val[2] || [])
433
+ )
434
+
435
+ result
436
+ end
437
+
438
+ def _reduce_26(val, _values, result)
439
+ result = Node.new(:ATTRIBUTE_CONDITION,
440
+ [val[1]] + (val[2] || [])
441
+ )
442
+
443
+ result
444
+ end
19
445
 
20
- def []= string, value
21
- return value unless @cache_on
22
- @mutex.synchronize { @cache[string] = value }
446
+ def _reduce_27(val, _values, result)
447
+ # Non standard, but hpricot supports it.
448
+ result = Node.new(:PSEUDO_CLASS,
449
+ [Node.new(:FUNCTION, ['nth-child(', val[1]])]
450
+ )
451
+
452
+ result
453
+ end
454
+
455
+ def _reduce_28(val, _values, result)
456
+ result = Node.new(:FUNCTION, [val.first.strip])
457
+
458
+ result
459
+ end
460
+
461
+ def _reduce_29(val, _values, result)
462
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
463
+
464
+ result
465
+ end
466
+
467
+ def _reduce_30(val, _values, result)
468
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
469
+
470
+ result
471
+ end
472
+
473
+ def _reduce_31(val, _values, result)
474
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
475
+
476
+ result
477
+ end
478
+
479
+ def _reduce_32(val, _values, result)
480
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
481
+
482
+ result
483
+ end
484
+
485
+ def _reduce_33(val, _values, result)
486
+ result = [val.first, val.last]
487
+ result
488
+ end
489
+
490
+ def _reduce_34(val, _values, result)
491
+ result = [val.first, val.last]
492
+ result
493
+ end
494
+
495
+ def _reduce_35(val, _values, result)
496
+ result = [val.first, val.last]
497
+ result
498
+ end
499
+
500
+ # reduce 36 omitted
501
+
502
+ # reduce 37 omitted
503
+
504
+ def _reduce_38(val, _values, result)
505
+ if val[0] == 'even'
506
+ val = ["2","n","+","0"]
507
+ result = Node.new(:AN_PLUS_B, val)
508
+ elsif val[0] == 'odd'
509
+ val = ["2","n","+","1"]
510
+ result = Node.new(:AN_PLUS_B, val)
511
+ else
512
+ # This is not CSS standard. It allows us to support this:
513
+ # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
514
+ # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
515
+ # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)'))
516
+ result = val
23
517
  end
518
+
519
+ result
520
+ end
24
521
 
25
- def clear_cache
26
- @mutex.synchronize { @cache = {} }
522
+ def _reduce_39(val, _values, result)
523
+ if val[1] == 'n'
524
+ result = Node.new(:AN_PLUS_B, val)
525
+ else
526
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
27
527
  end
528
+
529
+ result
530
+ end
28
531
 
29
- def without_cache &block
30
- tmp = @cache_on
31
- @cache_on = false
32
- block.call
33
- @cache_on = tmp
532
+ def _reduce_40(val, _values, result)
533
+ # n+3, -n+3
534
+ if val[0] == 'n'
535
+ val.unshift("1")
536
+ result = Node.new(:AN_PLUS_B, val)
537
+ elsif val[0] == '-n'
538
+ val[0] = 'n'
539
+ val.unshift("-1")
540
+ result = Node.new(:AN_PLUS_B, val)
541
+ else
542
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
34
543
  end
544
+
545
+ result
546
+ end
35
547
 
36
- ###
37
- # Parse this CSS selector in +selector+. Returns an AST.
38
- def parse selector
39
- @warned ||= false
40
- unless @warned
41
- $stderr.puts('Nokogiri::CSS::Parser.parse is deprecated, call Nokogiri::CSS.parse()')
42
- @warned = true
43
- end
44
- new.parse selector
548
+ def _reduce_41(val, _values, result)
549
+ if val[1] == 'n'
550
+ val << "+"
551
+ val << "0"
552
+ result = Node.new(:AN_PLUS_B, val)
553
+ else
554
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
45
555
  end
46
- end
47
-
48
- def initialize namespaces = {}
49
- @namespaces = namespaces
50
- super()
51
- end
52
- alias :parse :scan_str
53
-
54
- def xpath_for string, options={}
55
- key = string + options[:ns].to_s
56
- v = self.class[key]
57
- return v if v
58
-
59
- args = [
60
- options[:prefix] || '//',
61
- options[:visitor] || XPathVisitor.new
62
- ]
63
- self.class[key] = parse(string).map { |ast|
64
- ast.to_xpath(*args)
65
- }
66
- end
67
-
68
- def on_error error_token_id, error_value, value_stack
69
- after = value_stack.compact.last
70
- raise SyntaxError.new("unexpected '#{error_value}' after '#{after}'")
71
- end
72
- end
73
- end
556
+
557
+ result
558
+ end
559
+
560
+ def _reduce_42(val, _values, result)
561
+ result = Node.new(:PSEUDO_CLASS, [val[1]])
562
+
563
+ result
564
+ end
565
+
566
+ def _reduce_43(val, _values, result)
567
+ result = Node.new(:PSEUDO_CLASS, [val[1]])
568
+ result
569
+ end
570
+
571
+ # reduce 44 omitted
572
+
573
+ # reduce 45 omitted
574
+
575
+ def _reduce_46(val, _values, result)
576
+ result = Node.new(:COMBINATOR, val)
577
+
578
+ result
579
+ end
580
+
581
+ def _reduce_47(val, _values, result)
582
+ result = Node.new(:COMBINATOR, val)
583
+
584
+ result
585
+ end
586
+
587
+ def _reduce_48(val, _values, result)
588
+ result = Node.new(:COMBINATOR, val)
589
+
590
+ result
74
591
  end
592
+
593
+ def _reduce_49(val, _values, result)
594
+ result = Node.new(:COMBINATOR, val)
595
+
596
+ result
597
+ end
598
+
599
+ # reduce 50 omitted
600
+
601
+ # reduce 51 omitted
602
+
603
+ # reduce 52 omitted
604
+
605
+ # reduce 53 omitted
606
+
607
+ def _reduce_54(val, _values, result)
608
+ result = Node.new(:ID, val)
609
+ result
610
+ end
611
+
612
+ def _reduce_55(val, _values, result)
613
+ result = [val.first, val[1]]
614
+ result
615
+ end
616
+
617
+ def _reduce_56(val, _values, result)
618
+ result = [val.first, val[1]]
619
+ result
620
+ end
621
+
622
+ # reduce 57 omitted
623
+
624
+ def _reduce_58(val, _values, result)
625
+ result = :equal
626
+ result
627
+ end
628
+
629
+ def _reduce_59(val, _values, result)
630
+ result = :prefix_match
631
+ result
632
+ end
633
+
634
+ def _reduce_60(val, _values, result)
635
+ result = :suffix_match
636
+ result
637
+ end
638
+
639
+ def _reduce_61(val, _values, result)
640
+ result = :substring_match
641
+ result
642
+ end
643
+
644
+ def _reduce_62(val, _values, result)
645
+ result = :not_equal
646
+ result
647
+ end
648
+
649
+ def _reduce_63(val, _values, result)
650
+ result = :includes
651
+ result
652
+ end
653
+
654
+ def _reduce_64(val, _values, result)
655
+ result = :dash_match
656
+ result
657
+ end
658
+
659
+ def _reduce_65(val, _values, result)
660
+ result = Node.new(:NOT, [val[1]])
661
+
662
+ result
663
+ end
664
+
665
+ # reduce 66 omitted
666
+
667
+ # reduce 67 omitted
668
+
669
+ # reduce 68 omitted
670
+
671
+ def _reduce_none(val, _values, result)
672
+ val[0]
673
+ end
674
+
675
+ end # class Parser
676
+ end # module CSS
677
+ end # module Nokogiri