nokogiri 1.6.8.1 → 1.13.4

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 (354) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +3 -20
  3. data/LICENSE-DEPENDENCIES.md +1903 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +197 -83
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +16 -22
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +751 -432
  10. data/ext/nokogiri/gumbo.c +584 -0
  11. data/ext/nokogiri/html4_document.c +166 -0
  12. data/ext/nokogiri/html4_element_description.c +294 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser_context.c +120 -0
  15. data/ext/nokogiri/html4_sax_push_parser.c +95 -0
  16. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  17. data/ext/nokogiri/nokogiri.c +228 -95
  18. data/ext/nokogiri/nokogiri.h +190 -98
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +49 -40
  21. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  22. data/ext/nokogiri/xml_cdata.c +24 -23
  23. data/ext/nokogiri/xml_comment.c +19 -26
  24. data/ext/nokogiri/xml_document.c +291 -217
  25. data/ext/nokogiri/xml_document_fragment.c +12 -16
  26. data/ext/nokogiri/xml_dtd.c +56 -50
  27. data/ext/nokogiri/xml_element_content.c +31 -26
  28. data/ext/nokogiri/xml_element_decl.c +22 -22
  29. data/ext/nokogiri/xml_encoding_handler.c +43 -18
  30. data/ext/nokogiri/xml_entity_decl.c +32 -30
  31. data/ext/nokogiri/xml_entity_reference.c +16 -18
  32. data/ext/nokogiri/xml_namespace.c +61 -58
  33. data/ext/nokogiri/xml_node.c +1194 -729
  34. data/ext/nokogiri/xml_node_set.c +178 -165
  35. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  36. data/ext/nokogiri/xml_reader.c +226 -175
  37. data/ext/nokogiri/xml_relax_ng.c +52 -28
  38. data/ext/nokogiri/xml_sax_parser.c +115 -114
  39. data/ext/nokogiri/xml_sax_parser_context.c +105 -86
  40. data/ext/nokogiri/xml_sax_push_parser.c +88 -35
  41. data/ext/nokogiri/xml_schema.c +112 -33
  42. data/ext/nokogiri/xml_syntax_error.c +42 -21
  43. data/ext/nokogiri/xml_text.c +13 -17
  44. data/ext/nokogiri/xml_xpath_context.c +223 -115
  45. data/ext/nokogiri/xslt_stylesheet.c +265 -173
  46. data/gumbo-parser/CHANGES.md +63 -0
  47. data/gumbo-parser/Makefile +101 -0
  48. data/gumbo-parser/THANKS +27 -0
  49. data/gumbo-parser/src/Makefile +34 -0
  50. data/gumbo-parser/src/README.md +41 -0
  51. data/gumbo-parser/src/ascii.c +75 -0
  52. data/gumbo-parser/src/ascii.h +115 -0
  53. data/gumbo-parser/src/attribute.c +42 -0
  54. data/gumbo-parser/src/attribute.h +17 -0
  55. data/gumbo-parser/src/char_ref.c +22225 -0
  56. data/gumbo-parser/src/char_ref.h +29 -0
  57. data/gumbo-parser/src/char_ref.rl +2154 -0
  58. data/gumbo-parser/src/error.c +626 -0
  59. data/gumbo-parser/src/error.h +148 -0
  60. data/gumbo-parser/src/foreign_attrs.c +104 -0
  61. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  62. data/gumbo-parser/src/gumbo.h +943 -0
  63. data/gumbo-parser/src/insertion_mode.h +33 -0
  64. data/gumbo-parser/src/macros.h +91 -0
  65. data/gumbo-parser/src/parser.c +4875 -0
  66. data/gumbo-parser/src/parser.h +41 -0
  67. data/gumbo-parser/src/replacement.h +33 -0
  68. data/gumbo-parser/src/string_buffer.c +103 -0
  69. data/gumbo-parser/src/string_buffer.h +68 -0
  70. data/gumbo-parser/src/string_piece.c +48 -0
  71. data/gumbo-parser/src/svg_attrs.c +174 -0
  72. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  73. data/gumbo-parser/src/svg_tags.c +137 -0
  74. data/gumbo-parser/src/svg_tags.gperf +55 -0
  75. data/gumbo-parser/src/tag.c +222 -0
  76. data/gumbo-parser/src/tag_lookup.c +382 -0
  77. data/gumbo-parser/src/tag_lookup.gperf +169 -0
  78. data/gumbo-parser/src/tag_lookup.h +13 -0
  79. data/gumbo-parser/src/token_buffer.c +79 -0
  80. data/gumbo-parser/src/token_buffer.h +71 -0
  81. data/gumbo-parser/src/token_type.h +17 -0
  82. data/gumbo-parser/src/tokenizer.c +3463 -0
  83. data/gumbo-parser/src/tokenizer.h +112 -0
  84. data/gumbo-parser/src/tokenizer_states.h +339 -0
  85. data/gumbo-parser/src/utf8.c +245 -0
  86. data/gumbo-parser/src/utf8.h +164 -0
  87. data/gumbo-parser/src/util.c +68 -0
  88. data/gumbo-parser/src/util.h +30 -0
  89. data/gumbo-parser/src/vector.c +111 -0
  90. data/gumbo-parser/src/vector.h +45 -0
  91. data/lib/nokogiri/class_resolver.rb +67 -0
  92. data/lib/nokogiri/css/node.rb +10 -8
  93. data/lib/nokogiri/css/parser.rb +410 -372
  94. data/lib/nokogiri/css/parser.y +260 -244
  95. data/lib/nokogiri/css/parser_extras.rb +54 -49
  96. data/lib/nokogiri/css/syntax_error.rb +3 -1
  97. data/lib/nokogiri/css/tokenizer.rb +107 -104
  98. data/lib/nokogiri/css/tokenizer.rex +7 -6
  99. data/lib/nokogiri/css/xpath_visitor.rb +226 -92
  100. data/lib/nokogiri/css.rb +50 -17
  101. data/lib/nokogiri/decorators/slop.rb +9 -7
  102. data/lib/nokogiri/extension.rb +31 -0
  103. data/lib/nokogiri/gumbo.rb +15 -0
  104. data/lib/nokogiri/html.rb +38 -27
  105. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  106. data/lib/nokogiri/{html → html4}/document.rb +104 -106
  107. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  108. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  109. data/lib/nokogiri/html4/element_description_defaults.rb +578 -0
  110. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  111. data/lib/nokogiri/{html → html4}/sax/parser.rb +24 -13
  112. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  113. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
  114. data/lib/nokogiri/html4.rb +46 -0
  115. data/lib/nokogiri/html5/document.rb +91 -0
  116. data/lib/nokogiri/html5/document_fragment.rb +83 -0
  117. data/lib/nokogiri/html5/node.rb +100 -0
  118. data/lib/nokogiri/html5.rb +478 -0
  119. data/lib/nokogiri/jruby/dependencies.rb +21 -0
  120. data/lib/nokogiri/syntax_error.rb +2 -0
  121. data/lib/nokogiri/version/constant.rb +6 -0
  122. data/lib/nokogiri/version/info.rb +222 -0
  123. data/lib/nokogiri/version.rb +3 -107
  124. data/lib/nokogiri/xml/attr.rb +6 -3
  125. data/lib/nokogiri/xml/attribute_decl.rb +3 -1
  126. data/lib/nokogiri/xml/builder.rb +97 -53
  127. data/lib/nokogiri/xml/cdata.rb +3 -1
  128. data/lib/nokogiri/xml/character_data.rb +2 -0
  129. data/lib/nokogiri/xml/document.rb +231 -93
  130. data/lib/nokogiri/xml/document_fragment.rb +57 -44
  131. data/lib/nokogiri/xml/dtd.rb +4 -2
  132. data/lib/nokogiri/xml/element_content.rb +2 -0
  133. data/lib/nokogiri/xml/element_decl.rb +3 -1
  134. data/lib/nokogiri/xml/entity_decl.rb +4 -2
  135. data/lib/nokogiri/xml/entity_reference.rb +20 -0
  136. data/lib/nokogiri/xml/namespace.rb +3 -0
  137. data/lib/nokogiri/xml/node/save_options.rb +10 -5
  138. data/lib/nokogiri/xml/node.rb +911 -337
  139. data/lib/nokogiri/xml/node_set.rb +141 -84
  140. data/lib/nokogiri/xml/notation.rb +13 -0
  141. data/lib/nokogiri/xml/parse_options.rb +23 -9
  142. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  143. data/lib/nokogiri/xml/pp/node.rb +25 -26
  144. data/lib/nokogiri/xml/pp.rb +4 -2
  145. data/lib/nokogiri/xml/processing_instruction.rb +3 -1
  146. data/lib/nokogiri/xml/reader.rb +23 -28
  147. data/lib/nokogiri/xml/relax_ng.rb +8 -2
  148. data/lib/nokogiri/xml/sax/document.rb +45 -49
  149. data/lib/nokogiri/xml/sax/parser.rb +43 -40
  150. data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
  151. data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
  152. data/lib/nokogiri/xml/sax.rb +6 -4
  153. data/lib/nokogiri/xml/schema.rb +19 -9
  154. data/lib/nokogiri/xml/searchable.rb +138 -89
  155. data/lib/nokogiri/xml/syntax_error.rb +26 -1
  156. data/lib/nokogiri/xml/text.rb +2 -0
  157. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  158. data/lib/nokogiri/xml/xpath.rb +15 -4
  159. data/lib/nokogiri/xml/xpath_context.rb +3 -3
  160. data/lib/nokogiri/xml.rb +39 -37
  161. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  162. data/lib/nokogiri/xslt.rb +29 -20
  163. data/lib/nokogiri.rb +49 -65
  164. data/lib/xsd/xmlparser/nokogiri.rb +26 -24
  165. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  166. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  167. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  168. data/patches/libxml2/0004-use-glibc-strlen.patch +53 -0
  169. data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
  170. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +3040 -0
  171. data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
  172. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  173. data/patches/libxml2/0010-Revert-Different-approach-to-fix-quadratic-behavior.patch +45 -0
  174. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +3037 -0
  175. data/ports/archives/libxml2-2.9.13.tar.xz +0 -0
  176. data/ports/archives/libxslt-1.1.35.tar.xz +0 -0
  177. metadata +233 -258
  178. data/.autotest +0 -26
  179. data/.cross_rubies +0 -9
  180. data/.editorconfig +0 -17
  181. data/.gemtest +0 -0
  182. data/.travis.yml +0 -51
  183. data/CHANGELOG.rdoc +0 -1160
  184. data/CONTRIBUTING.md +0 -42
  185. data/C_CODING_STYLE.rdoc +0 -33
  186. data/LICENSE.txt +0 -31
  187. data/Manifest.txt +0 -364
  188. data/ROADMAP.md +0 -111
  189. data/Rakefile +0 -375
  190. data/STANDARD_RESPONSES.md +0 -47
  191. data/Y_U_NO_GEMSPEC.md +0 -155
  192. data/appveyor.yml +0 -22
  193. data/build_all +0 -45
  194. data/ext/nokogiri/html_document.c +0 -170
  195. data/ext/nokogiri/html_document.h +0 -10
  196. data/ext/nokogiri/html_element_description.c +0 -279
  197. data/ext/nokogiri/html_element_description.h +0 -10
  198. data/ext/nokogiri/html_entity_lookup.c +0 -32
  199. data/ext/nokogiri/html_entity_lookup.h +0 -8
  200. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  201. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  202. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  203. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  204. data/ext/nokogiri/xml_attr.h +0 -9
  205. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  206. data/ext/nokogiri/xml_cdata.h +0 -9
  207. data/ext/nokogiri/xml_comment.h +0 -9
  208. data/ext/nokogiri/xml_document.h +0 -23
  209. data/ext/nokogiri/xml_document_fragment.h +0 -10
  210. data/ext/nokogiri/xml_dtd.h +0 -10
  211. data/ext/nokogiri/xml_element_content.h +0 -10
  212. data/ext/nokogiri/xml_element_decl.h +0 -9
  213. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  214. data/ext/nokogiri/xml_entity_decl.h +0 -10
  215. data/ext/nokogiri/xml_entity_reference.h +0 -9
  216. data/ext/nokogiri/xml_io.c +0 -60
  217. data/ext/nokogiri/xml_io.h +0 -11
  218. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  219. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  220. data/ext/nokogiri/xml_namespace.h +0 -13
  221. data/ext/nokogiri/xml_node.h +0 -13
  222. data/ext/nokogiri/xml_node_set.h +0 -13
  223. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  224. data/ext/nokogiri/xml_reader.h +0 -10
  225. data/ext/nokogiri/xml_relax_ng.h +0 -9
  226. data/ext/nokogiri/xml_sax_parser.h +0 -39
  227. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  228. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  229. data/ext/nokogiri/xml_schema.h +0 -9
  230. data/ext/nokogiri/xml_syntax_error.h +0 -13
  231. data/ext/nokogiri/xml_text.h +0 -9
  232. data/ext/nokogiri/xml_xpath_context.h +0 -10
  233. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  234. data/lib/nokogiri/html/document_fragment.rb +0 -39
  235. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  236. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  237. data/patches/sort-patches-by-date +0 -25
  238. data/ports/archives/libxml2-2.9.4.tar.gz +0 -0
  239. data/ports/archives/libxslt-1.1.29.tar.gz +0 -0
  240. data/suppressions/README.txt +0 -1
  241. data/suppressions/nokogiri_ree-1.8.7.358.supp +0 -61
  242. data/suppressions/nokogiri_ruby-1.8.7.370.supp +0 -0
  243. data/suppressions/nokogiri_ruby-1.9.2.320.supp +0 -28
  244. data/suppressions/nokogiri_ruby-1.9.3.327.supp +0 -28
  245. data/tasks/test.rb +0 -100
  246. data/test/css/test_nthiness.rb +0 -226
  247. data/test/css/test_parser.rb +0 -369
  248. data/test/css/test_tokenizer.rb +0 -215
  249. data/test/css/test_xpath_visitor.rb +0 -96
  250. data/test/decorators/test_slop.rb +0 -20
  251. data/test/files/2ch.html +0 -108
  252. data/test/files/GH_1042.html +0 -18
  253. data/test/files/address_book.rlx +0 -12
  254. data/test/files/address_book.xml +0 -10
  255. data/test/files/atom.xml +0 -344
  256. data/test/files/bar/bar.xsd +0 -4
  257. data/test/files/bogus.xml +0 -0
  258. data/test/files/dont_hurt_em_why.xml +0 -422
  259. data/test/files/encoding.html +0 -82
  260. data/test/files/encoding.xhtml +0 -84
  261. data/test/files/exslt.xml +0 -8
  262. data/test/files/exslt.xslt +0 -35
  263. data/test/files/foo/foo.xsd +0 -4
  264. data/test/files/metacharset.html +0 -10
  265. data/test/files/namespace_pressure_test.xml +0 -1684
  266. data/test/files/noencoding.html +0 -47
  267. data/test/files/po.xml +0 -32
  268. data/test/files/po.xsd +0 -66
  269. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  270. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  271. data/test/files/saml/xenc_schema.xsd +0 -146
  272. data/test/files/saml/xmldsig_schema.xsd +0 -318
  273. data/test/files/shift_jis.html +0 -10
  274. data/test/files/shift_jis.xml +0 -5
  275. data/test/files/shift_jis_no_charset.html +0 -9
  276. data/test/files/slow-xpath.xml +0 -25509
  277. data/test/files/snuggles.xml +0 -3
  278. data/test/files/staff.dtd +0 -10
  279. data/test/files/staff.xml +0 -59
  280. data/test/files/staff.xslt +0 -32
  281. data/test/files/test_document_url/bar.xml +0 -2
  282. data/test/files/test_document_url/document.dtd +0 -4
  283. data/test/files/test_document_url/document.xml +0 -6
  284. data/test/files/tlm.html +0 -851
  285. data/test/files/to_be_xincluded.xml +0 -2
  286. data/test/files/valid_bar.xml +0 -2
  287. data/test/files/xinclude.xml +0 -4
  288. data/test/helper.rb +0 -181
  289. data/test/html/sax/test_parser.rb +0 -141
  290. data/test/html/sax/test_parser_context.rb +0 -46
  291. data/test/html/sax/test_push_parser.rb +0 -87
  292. data/test/html/test_builder.rb +0 -164
  293. data/test/html/test_document.rb +0 -701
  294. data/test/html/test_document_encoding.rb +0 -145
  295. data/test/html/test_document_fragment.rb +0 -301
  296. data/test/html/test_element_description.rb +0 -105
  297. data/test/html/test_named_characters.rb +0 -14
  298. data/test/html/test_node.rb +0 -212
  299. data/test/html/test_node_encoding.rb +0 -85
  300. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  301. data/test/namespaces/test_namespaces_aliased_default.rb +0 -24
  302. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  303. data/test/namespaces/test_namespaces_in_cloned_doc.rb +0 -31
  304. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  305. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -80
  306. data/test/namespaces/test_namespaces_preservation.rb +0 -31
  307. data/test/test_convert_xpath.rb +0 -135
  308. data/test/test_css_cache.rb +0 -45
  309. data/test/test_encoding_handler.rb +0 -48
  310. data/test/test_memory_leak.rb +0 -156
  311. data/test/test_nokogiri.rb +0 -138
  312. data/test/test_soap4r_sax.rb +0 -52
  313. data/test/test_xslt_transforms.rb +0 -314
  314. data/test/xml/node/test_save_options.rb +0 -28
  315. data/test/xml/node/test_subclass.rb +0 -44
  316. data/test/xml/sax/test_parser.rb +0 -394
  317. data/test/xml/sax/test_parser_context.rb +0 -115
  318. data/test/xml/sax/test_push_parser.rb +0 -157
  319. data/test/xml/test_attr.rb +0 -67
  320. data/test/xml/test_attribute_decl.rb +0 -86
  321. data/test/xml/test_builder.rb +0 -341
  322. data/test/xml/test_c14n.rb +0 -180
  323. data/test/xml/test_cdata.rb +0 -48
  324. data/test/xml/test_comment.rb +0 -40
  325. data/test/xml/test_document.rb +0 -982
  326. data/test/xml/test_document_encoding.rb +0 -31
  327. data/test/xml/test_document_fragment.rb +0 -271
  328. data/test/xml/test_dtd.rb +0 -187
  329. data/test/xml/test_dtd_encoding.rb +0 -31
  330. data/test/xml/test_element_content.rb +0 -56
  331. data/test/xml/test_element_decl.rb +0 -73
  332. data/test/xml/test_entity_decl.rb +0 -122
  333. data/test/xml/test_entity_reference.rb +0 -251
  334. data/test/xml/test_namespace.rb +0 -96
  335. data/test/xml/test_node.rb +0 -1244
  336. data/test/xml/test_node_attributes.rb +0 -115
  337. data/test/xml/test_node_encoding.rb +0 -69
  338. data/test/xml/test_node_inheritance.rb +0 -32
  339. data/test/xml/test_node_reparenting.rb +0 -549
  340. data/test/xml/test_node_set.rb +0 -775
  341. data/test/xml/test_parse_options.rb +0 -64
  342. data/test/xml/test_processing_instruction.rb +0 -30
  343. data/test/xml/test_reader.rb +0 -589
  344. data/test/xml/test_reader_encoding.rb +0 -134
  345. data/test/xml/test_relax_ng.rb +0 -60
  346. data/test/xml/test_schema.rb +0 -142
  347. data/test/xml/test_syntax_error.rb +0 -30
  348. data/test/xml/test_text.rb +0 -60
  349. data/test/xml/test_unparented_node.rb +0 -440
  350. data/test/xml/test_xinclude.rb +0 -83
  351. data/test/xml/test_xpath.rb +0 -445
  352. data/test/xslt/test_custom_functions.rb +0 -133
  353. data/test/xslt/test_exception_handling.rb +0 -37
  354. data/test_all +0 -107
@@ -1,13 +1,22 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.4.12
4
- # from Racc grammer file "".
4
+ # This file is automatically generated by Racc 1.6.0
5
+ # from Racc grammar file "".
5
6
  #
6
7
 
7
8
  require 'racc/parser.rb'
8
9
 
9
10
 
10
- require 'nokogiri/css/parser_extras'
11
+ require_relative "parser_extras"
12
+
13
+ module Nokogiri
14
+ module CSS
15
+ # :nodoc: all
16
+ class Parser < Racc::Parser
17
+ end
18
+ end
19
+ end
11
20
 
12
21
  module Nokogiri
13
22
  module CSS
@@ -17,190 +26,217 @@ module Nokogiri
17
26
  def unescape_css_identifier(identifier)
18
27
  identifier.gsub(/\\(?:([^0-9a-fA-F])|([0-9a-fA-F]{1,6})\s?)/){ |m| $1 || [$2.hex].pack('U') }
19
28
  end
29
+
30
+ def unescape_css_string(str)
31
+ str.gsub(/\\(?:([^0-9a-fA-F])|([0-9a-fA-F]{1,6})\s?)/) do |m|
32
+ if $1=="\n"
33
+ ''
34
+ else
35
+ $1 || [$2.hex].pack('U')
36
+ end
37
+ end
38
+ end
20
39
  ##### State transition tables begin ###
21
40
 
22
41
  racc_action_table = [
23
- 24, 93, 56, 57, 33, 55, 94, 23, 24, 22,
24
- 12, 93, 33, 27, 35, 52, 88, 22, -23, 25,
25
- 92, 98, 23, 33, 26, 18, 20, 25, 27, 86,
26
- 23, 24, 26, 18, 20, 33, 27, 11, 39, 24,
27
- 22, 23, 89, 33, 18, 101, 100, 27, 22, 12,
28
- 25, 24, 95, 23, 90, 26, 18, 20, 25, 27,
29
- 66, 23, 24, 26, 18, 20, 33, 27, 91, 90,
30
- 51, 22, 96, 85, 33, 26, 33, -23, 33, 56,
31
- 87, 25, 60, 99, 23, 74, 26, 18, 20, 39,
32
- 27, 39, 23, 39, 23, 18, 23, 18, 27, 18,
33
- 27, 33, 27, 33, 56, 87, 22, 60, 56, 87,
34
- 102, 60, 56, 87, 33, 60, 39, 24, 39, 23,
35
- 103, 23, 18, 20, 18, 27, 46, 27, 49, 39,
36
- 93, 44, 23, 105, 33, 18, 51, 45, 27, 33,
37
- -23, 26, 108, 56, 58, 109, 60, nil, nil, 39,
38
- nil, nil, 23, nil, 39, 18, nil, 23, 27, nil,
39
- 18, 20, nil, 27, 82, 83, nil, nil, nil, 82,
40
- 83, nil, nil, nil, nil, 78, 79, 80, nil, 81,
41
- 78, 79, 80, 77, 81, 4, 5, 10, 77, 4,
42
- 5, 43, nil, nil, nil, 6, nil, 8, 7, 6,
43
- nil, 8, 7, 4, 5, 10, nil, nil, nil, nil,
44
- nil, nil, nil, 6, nil, 8, 7 ]
42
+ 27, 11, 38, 99, 36, 12, 40, 26, 48, 25,
43
+ 49, 27, 100, 12, 30, 36, 105, 99, -26, 28,
44
+ 25, -26, 26, 27, 29, 14, 21, 23, 80, 30,
45
+ 28, 36, 72, 26, -26, 29, 14, 21, 23, 27,
46
+ 30, 91, 56, 36, 97, 96, 43, 29, 25, 26,
47
+ 27, 92, 94, 21, 36, 95, 30, 98, 28, 25,
48
+ 101, 26, 102, 29, 14, 21, 23, 96, 30, 28,
49
+ 36, 36, 26, 103, 29, 14, 21, 23, 27, 30,
50
+ 108, 107, 36, 109, 106, 43, 43, 25, 26, 26,
51
+ 27, 110, 21, 21, 111, 30, 30, 28, 99, 50,
52
+ 26, 53, 29, 14, 21, 23, 36, 30, 36, 56,
53
+ 61, 64, 113, 66, 29, 14, 116, 36, 118, 36,
54
+ nil, 43, nil, 43, 26, nil, 26, 14, 21, 23,
55
+ 21, 30, 43, 30, 43, 26, nil, 26, 36, 21,
56
+ 36, 21, 30, 25, 30, nil, nil, nil, nil, nil,
57
+ nil, 61, 62, 43, 60, 43, 26, nil, 26, nil,
58
+ 21, 23, 21, 30, 57, 30, 88, 89, 14, nil,
59
+ nil, 88, 89, nil, nil, nil, nil, 84, 85, 86,
60
+ nil, 87, 84, 85, 86, 83, 87, nil, 61, 93,
61
+ 83, 66, 61, 93, nil, 66, 61, 93, nil, 66,
62
+ 61, 93, nil, 66, nil, 14, nil, 61, 93, 14,
63
+ 66, nil, nil, 14, nil, nil, nil, 14, 4, 5,
64
+ 10, nil, nil, nil, 14, 4, 5, 47, 6, nil,
65
+ 8, 7, 4, 5, 10, 6, nil, 8, 7, nil,
66
+ nil, nil, 6, nil, 8, 7 ]
45
67
 
46
68
  racc_action_check = [
47
- 42, 58, 24, 24, 42, 24, 57, 15, 43, 42,
48
- 64, 57, 43, 15, 11, 24, 53, 43, 58, 42,
49
- 56, 64, 42, 14, 42, 42, 42, 43, 42, 50,
50
- 43, 3, 43, 43, 43, 3, 43, 1, 14, 9,
51
- 3, 14, 54, 9, 14, 76, 76, 14, 9, 1,
52
- 3, 27, 59, 3, 60, 3, 3, 3, 9, 3,
53
- 27, 9, 12, 9, 9, 9, 12, 9, 55, 55,
54
- 27, 12, 61, 49, 28, 27, 62, 46, 30, 92,
55
- 92, 12, 92, 75, 12, 45, 12, 12, 12, 28,
56
- 12, 62, 28, 30, 62, 28, 30, 62, 28, 30,
57
- 62, 39, 30, 32, 90, 90, 39, 90, 51, 51,
58
- 84, 51, 93, 93, 31, 93, 39, 23, 32, 39,
59
- 86, 32, 39, 39, 32, 39, 23, 32, 23, 31,
60
- 87, 18, 31, 91, 29, 31, 23, 21, 31, 25,
61
- 22, 23, 94, 25, 25, 105, 25, nil, nil, 29,
62
- nil, nil, 29, nil, 25, 29, nil, 25, 29, nil,
63
- 25, 25, nil, 25, 48, 48, nil, nil, nil, 47,
64
- 47, nil, nil, nil, nil, 48, 48, 48, nil, 48,
65
- 47, 47, 47, 48, 47, 0, 0, 0, 47, 17,
66
- 17, 17, nil, nil, nil, 0, nil, 0, 0, 17,
67
- nil, 17, 17, 26, 26, 26, nil, nil, nil, nil,
68
- nil, nil, nil, 26, nil, 26, 26 ]
69
+ 3, 1, 11, 64, 3, 70, 14, 17, 21, 3,
70
+ 24, 9, 62, 1, 17, 9, 70, 62, 25, 3,
71
+ 9, 64, 3, 30, 3, 3, 3, 3, 49, 3,
72
+ 9, 16, 30, 9, 50, 9, 9, 9, 9, 12,
73
+ 9, 53, 30, 12, 60, 60, 16, 30, 12, 16,
74
+ 46, 54, 58, 16, 46, 59, 16, 61, 12, 46,
75
+ 63, 12, 65, 12, 12, 12, 12, 66, 12, 46,
76
+ 31, 32, 46, 67, 46, 46, 46, 46, 47, 46,
77
+ 82, 82, 47, 82, 81, 31, 32, 47, 31, 32,
78
+ 26, 90, 31, 32, 92, 31, 32, 47, 93, 26,
79
+ 47, 26, 47, 47, 47, 47, 28, 47, 33, 26,
80
+ 28, 28, 97, 28, 26, 26, 100, 34, 113, 35,
81
+ nil, 28, nil, 33, 28, nil, 33, 28, 28, 28,
82
+ 33, 28, 34, 33, 35, 34, nil, 35, 43, 34,
83
+ 68, 35, 34, 43, 35, nil, nil, nil, nil, nil,
84
+ nil, 27, 27, 43, 27, 68, 43, nil, 68, nil,
85
+ 43, 43, 68, 43, 27, 68, 51, 51, 27, nil,
86
+ nil, 52, 52, nil, nil, nil, nil, 51, 51, 51,
87
+ nil, 51, 52, 52, 52, 51, 52, nil, 56, 56,
88
+ 52, 56, 96, 96, nil, 96, 98, 98, nil, 98,
89
+ 99, 99, nil, 99, nil, 56, nil, 101, 101, 96,
90
+ 101, nil, nil, 98, nil, nil, nil, 99, 0, 0,
91
+ 0, nil, nil, nil, 101, 20, 20, 20, 0, nil,
92
+ 0, 0, 29, 29, 29, 20, nil, 20, 20, nil,
93
+ nil, nil, 29, nil, 29, 29 ]
69
94
 
70
95
  racc_action_pointer = [
71
- 178, 37, nil, 29, nil, nil, nil, nil, nil, 37,
72
- nil, 14, 60, nil, 17, -17, nil, 182, 120, nil,
73
- nil, 108, 111, 115, -8, 133, 196, 49, 68, 128,
74
- 72, 108, 97, nil, nil, nil, nil, nil, nil, 95,
75
- nil, nil, -2, 6, nil, 74, 48, 166, 161, 48,
76
- 0, 98, nil, -7, 19, 57, 8, -1, -11, 29,
77
- 42, 49, 70, nil, -2, nil, nil, nil, nil, nil,
78
- nil, nil, nil, nil, nil, 58, 35, nil, nil, nil,
79
- nil, nil, nil, nil, 85, nil, 109, 118, nil, nil,
80
- 94, 126, 69, 102, 129, nil, nil, nil, nil, nil,
81
- nil, nil, nil, nil, nil, 132, nil, nil, nil, nil ]
96
+ 211, 1, nil, -2, nil, nil, nil, nil, nil, 9,
97
+ nil, 2, 37, nil, -5, nil, 25, -17, nil, nil,
98
+ 218, -3, nil, nil, -20, -12, 88, 141, 100, 225,
99
+ 21, 64, 65, 102, 111, 113, nil, nil, nil, nil,
100
+ nil, nil, nil, 132, nil, nil, 48, 76, nil, 17,
101
+ 4, 163, 168, 16, 21, nil, 178, nil, 29, 32,
102
+ 33, 45, 5, 48, -9, 39, 55, 50, 134, nil,
103
+ -7, nil, nil, nil, nil, nil, nil, nil, nil, nil,
104
+ nil, 59, 70, nil, nil, nil, nil, nil, nil, nil,
105
+ 66, nil, 83, 86, nil, nil, 182, 105, 186, 190,
106
+ 103, 197, nil, nil, nil, nil, nil, nil, nil, nil,
107
+ nil, nil, nil, 105, nil, nil, nil, nil, nil ]
82
108
 
83
109
  racc_action_default = [
84
- -74, -75, -2, -24, -4, -5, -6, -7, -8, -24,
85
- -73, -75, -24, -3, -47, -10, -13, -17, -75, -19,
86
- -20, -75, -22, -24, -75, -24, -74, -75, -53, -54,
87
- -55, -56, -57, -58, -14, 110, -1, -9, -46, -24,
88
- -11, -12, -24, -24, -18, -75, -29, -61, -61, -75,
89
- -75, -75, -30, -75, -75, -38, -39, -40, -22, -75,
90
- -38, -75, -70, -72, -75, -44, -45, -48, -49, -50,
91
- -51, -52, -15, -16, -21, -75, -75, -62, -63, -64,
92
- -65, -66, -67, -68, -75, -27, -75, -40, -31, -32,
93
- -75, -43, -75, -75, -75, -33, -69, -71, -34, -25,
94
- -59, -60, -26, -28, -35, -75, -36, -37, -42, -41 ]
110
+ -81, -82, -2, -27, -4, -5, -6, -7, -8, -27,
111
+ -80, -82, -27, -3, -82, -10, -53, -12, -15, -16,
112
+ -20, -82, -22, -23, -82, -25, -27, -82, -27, -81,
113
+ -82, -59, -60, -61, -62, -63, -64, -17, 119, -1,
114
+ -9, -11, -52, -27, -13, -14, -27, -27, -21, -82,
115
+ -32, -68, -68, -82, -82, -33, -82, -34, -82, -82,
116
+ -43, -44, -45, -46, -25, -82, -43, -82, -77, -79,
117
+ -82, -50, -51, -54, -55, -56, -57, -58, -18, -19,
118
+ -24, -82, -82, -69, -70, -71, -72, -73, -74, -75,
119
+ -82, -30, -82, -45, -35, -36, -82, -49, -82, -82,
120
+ -82, -82, -37, -76, -78, -38, -28, -65, -66, -67,
121
+ -29, -31, -39, -82, -40, -41, -48, -42, -47 ]
95
122
 
96
123
  racc_goto_table = [
97
- 53, 38, 13, 1, 41, 48, 62, 40, 34, 65,
98
- 50, 36, 63, 75, 84, 67, 68, 69, 70, 71,
99
- 62, 47, 37, 42, 54, nil, 63, nil, nil, 64,
100
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
101
- nil, 72, 73, nil, nil, nil, nil, nil, nil, 97,
102
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
103
- nil, nil, nil, nil, nil, nil, 104, nil, 106, 107 ]
124
+ 58, 42, 13, 1, 46, 52, 19, 68, 37, 71,
125
+ 41, 39, 19, 69, 44, 19, 73, 74, 75, 76,
126
+ 77, 45, 68, 81, 90, 54, 51, 59, 69, 55,
127
+ nil, nil, 70, nil, nil, nil, nil, nil, nil, nil,
128
+ nil, nil, nil, nil, nil, 78, 79, nil, nil, 19,
129
+ 19, nil, nil, 104, nil, nil, nil, nil, nil, nil,
130
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 112,
131
+ nil, 114, 115, nil, 117 ]
104
132
 
105
133
  racc_goto_check = [
106
- 18, 12, 2, 1, 11, 9, 7, 10, 2, 9,
107
- 15, 2, 12, 17, 17, 12, 12, 12, 12, 12,
108
- 7, 16, 8, 5, 19, nil, 12, nil, nil, 1,
109
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
110
- nil, 2, 2, nil, nil, nil, nil, nil, nil, 12,
111
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
112
- nil, nil, nil, nil, nil, nil, 18, nil, 18, 18 ]
134
+ 20, 14, 2, 1, 5, 11, 7, 9, 2, 11,
135
+ 10, 2, 7, 14, 12, 7, 14, 14, 14, 14,
136
+ 14, 13, 9, 19, 19, 17, 18, 21, 14, 7,
137
+ nil, nil, 1, nil, nil, nil, nil, nil, nil, nil,
138
+ nil, nil, nil, nil, nil, 2, 2, nil, nil, 7,
139
+ 7, nil, nil, 14, nil, nil, nil, nil, nil, nil,
140
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 20,
141
+ nil, 20, 20, nil, 20 ]
113
142
 
114
143
  racc_goto_pointer = [
115
- nil, 3, -1, nil, nil, 6, nil, -19, 8, -18,
116
- -8, -11, -13, nil, nil, -13, -2, -34, -24, 0,
117
- nil, nil, nil, nil ]
144
+ nil, 3, -1, nil, nil, -16, nil, 3, nil, -21,
145
+ -6, -21, -3, 4, -15, nil, nil, -1, 0, -28,
146
+ -27, 0, nil, nil, nil, nil ]
118
147
 
119
148
  racc_goto_default = [
120
- nil, nil, nil, 2, 3, 9, 17, 14, nil, 15,
121
- 31, 30, 16, 29, 19, 21, nil, nil, 59, nil,
122
- 28, 32, 76, 61 ]
149
+ nil, nil, nil, 2, 3, 9, 15, 63, 20, 16,
150
+ nil, 17, 34, 33, 18, 32, 22, 24, nil, nil,
151
+ 65, nil, 31, 35, 82, 67 ]
123
152
 
124
153
  racc_reduce_table = [
125
154
  0, 0, :racc_error,
126
- 3, 32, :_reduce_1,
127
- 1, 32, :_reduce_2,
128
- 2, 32, :_reduce_3,
129
- 1, 36, :_reduce_4,
130
- 1, 36, :_reduce_5,
131
- 1, 36, :_reduce_6,
132
- 1, 36, :_reduce_7,
133
- 1, 36, :_reduce_8,
134
- 2, 37, :_reduce_9,
135
- 1, 37, :_reduce_none,
136
- 2, 37, :_reduce_11,
137
- 2, 37, :_reduce_12,
138
- 1, 37, :_reduce_13,
139
- 2, 34, :_reduce_14,
140
- 3, 33, :_reduce_15,
141
- 3, 33, :_reduce_16,
142
- 1, 33, :_reduce_none,
143
- 2, 44, :_reduce_18,
144
- 1, 38, :_reduce_none,
145
- 1, 38, :_reduce_20,
146
- 3, 45, :_reduce_21,
147
- 1, 45, :_reduce_22,
148
- 1, 46, :_reduce_23,
149
- 0, 46, :_reduce_none,
150
- 4, 42, :_reduce_25,
151
- 4, 42, :_reduce_26,
152
- 3, 42, :_reduce_27,
153
- 3, 47, :_reduce_28,
154
- 1, 47, :_reduce_29,
155
- 2, 40, :_reduce_30,
156
- 3, 40, :_reduce_31,
157
- 3, 40, :_reduce_32,
158
- 3, 40, :_reduce_33,
159
- 3, 40, :_reduce_34,
160
- 3, 49, :_reduce_35,
161
- 3, 49, :_reduce_36,
162
- 3, 49, :_reduce_37,
163
- 1, 49, :_reduce_none,
164
- 1, 49, :_reduce_none,
165
- 1, 49, :_reduce_40,
166
- 4, 50, :_reduce_41,
167
- 3, 50, :_reduce_42,
168
- 2, 50, :_reduce_43,
169
- 2, 41, :_reduce_44,
170
- 2, 41, :_reduce_45,
171
- 1, 39, :_reduce_none,
172
- 0, 39, :_reduce_none,
173
- 2, 43, :_reduce_48,
174
- 2, 43, :_reduce_49,
175
- 2, 43, :_reduce_50,
176
- 2, 43, :_reduce_51,
177
- 2, 43, :_reduce_52,
178
- 1, 43, :_reduce_none,
179
- 1, 43, :_reduce_none,
180
- 1, 43, :_reduce_none,
181
- 1, 43, :_reduce_none,
182
- 1, 43, :_reduce_none,
183
- 1, 51, :_reduce_58,
184
- 2, 48, :_reduce_59,
185
- 2, 48, :_reduce_60,
186
- 0, 48, :_reduce_none,
187
- 1, 53, :_reduce_62,
188
- 1, 53, :_reduce_63,
189
- 1, 53, :_reduce_64,
190
- 1, 53, :_reduce_65,
191
- 1, 53, :_reduce_66,
192
- 1, 53, :_reduce_67,
193
- 1, 53, :_reduce_68,
194
- 3, 52, :_reduce_69,
195
- 1, 54, :_reduce_none,
196
- 2, 54, :_reduce_none,
197
- 1, 54, :_reduce_none,
198
- 1, 35, :_reduce_none,
199
- 0, 35, :_reduce_none ]
200
-
201
- racc_reduce_n = 75
202
-
203
- racc_shift_n = 110
155
+ 3, 33, :_reduce_1,
156
+ 1, 33, :_reduce_2,
157
+ 2, 33, :_reduce_3,
158
+ 1, 37, :_reduce_4,
159
+ 1, 37, :_reduce_5,
160
+ 1, 37, :_reduce_6,
161
+ 1, 37, :_reduce_7,
162
+ 1, 37, :_reduce_8,
163
+ 2, 38, :_reduce_9,
164
+ 1, 39, :_reduce_10,
165
+ 2, 40, :_reduce_11,
166
+ 1, 40, :_reduce_none,
167
+ 2, 40, :_reduce_13,
168
+ 2, 40, :_reduce_14,
169
+ 1, 40, :_reduce_15,
170
+ 1, 40, :_reduce_none,
171
+ 2, 35, :_reduce_17,
172
+ 3, 34, :_reduce_18,
173
+ 3, 34, :_reduce_19,
174
+ 1, 34, :_reduce_none,
175
+ 2, 47, :_reduce_21,
176
+ 1, 41, :_reduce_none,
177
+ 1, 41, :_reduce_23,
178
+ 3, 48, :_reduce_24,
179
+ 1, 48, :_reduce_25,
180
+ 1, 49, :_reduce_26,
181
+ 0, 49, :_reduce_none,
182
+ 4, 45, :_reduce_28,
183
+ 4, 45, :_reduce_29,
184
+ 3, 45, :_reduce_30,
185
+ 3, 50, :_reduce_31,
186
+ 1, 50, :_reduce_32,
187
+ 1, 50, :_reduce_none,
188
+ 2, 43, :_reduce_34,
189
+ 3, 43, :_reduce_35,
190
+ 3, 43, :_reduce_36,
191
+ 3, 43, :_reduce_37,
192
+ 3, 43, :_reduce_38,
193
+ 3, 52, :_reduce_39,
194
+ 3, 52, :_reduce_40,
195
+ 3, 52, :_reduce_41,
196
+ 3, 52, :_reduce_42,
197
+ 1, 52, :_reduce_none,
198
+ 1, 52, :_reduce_none,
199
+ 1, 52, :_reduce_45,
200
+ 1, 52, :_reduce_none,
201
+ 4, 53, :_reduce_47,
202
+ 3, 53, :_reduce_48,
203
+ 2, 53, :_reduce_49,
204
+ 2, 44, :_reduce_50,
205
+ 2, 44, :_reduce_51,
206
+ 1, 42, :_reduce_none,
207
+ 0, 42, :_reduce_none,
208
+ 2, 46, :_reduce_54,
209
+ 2, 46, :_reduce_55,
210
+ 2, 46, :_reduce_56,
211
+ 2, 46, :_reduce_57,
212
+ 2, 46, :_reduce_58,
213
+ 1, 46, :_reduce_none,
214
+ 1, 46, :_reduce_none,
215
+ 1, 46, :_reduce_none,
216
+ 1, 46, :_reduce_none,
217
+ 1, 46, :_reduce_none,
218
+ 1, 54, :_reduce_64,
219
+ 2, 51, :_reduce_65,
220
+ 2, 51, :_reduce_66,
221
+ 2, 51, :_reduce_67,
222
+ 0, 51, :_reduce_none,
223
+ 1, 56, :_reduce_69,
224
+ 1, 56, :_reduce_70,
225
+ 1, 56, :_reduce_71,
226
+ 1, 56, :_reduce_72,
227
+ 1, 56, :_reduce_73,
228
+ 1, 56, :_reduce_74,
229
+ 1, 56, :_reduce_75,
230
+ 3, 55, :_reduce_76,
231
+ 1, 57, :_reduce_none,
232
+ 2, 57, :_reduce_none,
233
+ 1, 57, :_reduce_none,
234
+ 1, 36, :_reduce_none,
235
+ 0, 36, :_reduce_none ]
236
+
237
+ racc_reduce_n = 82
238
+
239
+ racc_shift_n = 119
204
240
 
205
241
  racc_token_table = {
206
242
  false => 0,
@@ -230,12 +266,13 @@ racc_token_table = {
230
266
  :LSQUARE => 24,
231
267
  :RSQUARE => 25,
232
268
  :HAS => 26,
233
- "." => 27,
234
- "*" => 28,
235
- "|" => 29,
236
- ":" => 30 }
269
+ "@" => 27,
270
+ "." => 28,
271
+ "*" => 29,
272
+ "|" => 30,
273
+ ":" => 31 }
237
274
 
238
- racc_nt_base = 31
275
+ racc_nt_base = 32
239
276
 
240
277
  racc_use_result_var = true
241
278
 
@@ -283,6 +320,7 @@ Racc_token_to_s_table = [
283
320
  "LSQUARE",
284
321
  "RSQUARE",
285
322
  "HAS",
323
+ "\"@\"",
286
324
  "\".\"",
287
325
  "\"*\"",
288
326
  "\"|\"",
@@ -293,6 +331,8 @@ Racc_token_to_s_table = [
293
331
  "prefixless_combinator_selector",
294
332
  "optional_S",
295
333
  "combinator",
334
+ "xpath_attribute_name",
335
+ "xpath_attribute",
296
336
  "simple_selector",
297
337
  "element_name",
298
338
  "hcap_0toN",
@@ -319,414 +359,412 @@ Racc_debug_parser = false
319
359
  # reduce 0 omitted
320
360
 
321
361
  def _reduce_1(val, _values, result)
322
- result = [val.first, val.last].flatten
323
-
362
+ result = [val[0], val[2]].flatten
363
+
324
364
  result
325
365
  end
326
366
 
327
367
  def _reduce_2(val, _values, result)
328
- result = val.flatten
368
+ result = val.flatten
329
369
  result
330
370
  end
331
371
 
332
372
  def _reduce_3(val, _values, result)
333
- result = [val.last].flatten
373
+ result = [val[1]].flatten
334
374
  result
335
375
  end
336
376
 
337
377
  def _reduce_4(val, _values, result)
338
- result = :DIRECT_ADJACENT_SELECTOR
378
+ result = :DIRECT_ADJACENT_SELECTOR
339
379
  result
340
380
  end
341
381
 
342
382
  def _reduce_5(val, _values, result)
343
- result = :CHILD_SELECTOR
383
+ result = :CHILD_SELECTOR
344
384
  result
345
385
  end
346
386
 
347
387
  def _reduce_6(val, _values, result)
348
- result = :FOLLOWING_SELECTOR
388
+ result = :FOLLOWING_SELECTOR
349
389
  result
350
390
  end
351
391
 
352
392
  def _reduce_7(val, _values, result)
353
- result = :DESCENDANT_SELECTOR
393
+ result = :DESCENDANT_SELECTOR
354
394
  result
355
395
  end
356
396
 
357
397
  def _reduce_8(val, _values, result)
358
- result = :CHILD_SELECTOR
398
+ result = :CHILD_SELECTOR
359
399
  result
360
400
  end
361
401
 
362
402
  def _reduce_9(val, _values, result)
363
- result = if val[1].nil?
364
- val.first
365
- else
366
- Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]])
367
- end
368
-
403
+ result = val[1]
369
404
  result
370
405
  end
371
406
 
372
- # reduce 10 omitted
373
-
374
- def _reduce_11(val, _values, result)
375
- result = Node.new(:CONDITIONAL_SELECTOR, val)
376
-
407
+ def _reduce_10(val, _values, result)
408
+ result = Node.new(:ATTRIB_NAME, [val[0]])
377
409
  result
378
410
  end
379
411
 
380
- def _reduce_12(val, _values, result)
381
- result = Node.new(:CONDITIONAL_SELECTOR, val)
382
-
412
+ def _reduce_11(val, _values, result)
413
+ result = if val[1].nil?
414
+ val[0]
415
+ else
416
+ Node.new(:CONDITIONAL_SELECTOR, [val[0], val[1]])
417
+ end
418
+
383
419
  result
384
420
  end
385
421
 
422
+ # reduce 12 omitted
423
+
386
424
  def _reduce_13(val, _values, result)
387
- result = Node.new(:CONDITIONAL_SELECTOR,
388
- [Node.new(:ELEMENT_NAME, ['*']), val.first]
389
- )
390
-
425
+ result = Node.new(:CONDITIONAL_SELECTOR, val)
391
426
  result
392
427
  end
393
428
 
394
429
  def _reduce_14(val, _values, result)
395
- result = Node.new(val.first, [nil, val.last])
396
-
430
+ result = Node.new(:CONDITIONAL_SELECTOR, val)
397
431
  result
398
432
  end
399
433
 
400
434
  def _reduce_15(val, _values, result)
401
- result = Node.new(val[1], [val.first, val.last])
402
-
435
+ result = Node.new(:CONDITIONAL_SELECTOR, [Node.new(:ELEMENT_NAME, ['*']), val[0]])
403
436
  result
404
437
  end
405
438
 
406
- def _reduce_16(val, _values, result)
407
- result = Node.new(:DESCENDANT_SELECTOR, [val.first, val.last])
408
-
439
+ # reduce 16 omitted
440
+
441
+ def _reduce_17(val, _values, result)
442
+ result = Node.new(val[0], [nil, val[1]])
409
443
  result
410
444
  end
411
445
 
412
- # reduce 17 omitted
413
-
414
446
  def _reduce_18(val, _values, result)
415
- result = Node.new(:CLASS_CONDITION, [unescape_css_identifier(val[1])])
447
+ result = Node.new(val[1], [val[0], val[2]])
416
448
  result
417
449
  end
418
450
 
419
- # reduce 19 omitted
420
-
421
- def _reduce_20(val, _values, result)
422
- result = Node.new(:ELEMENT_NAME, val)
451
+ def _reduce_19(val, _values, result)
452
+ result = Node.new(:DESCENDANT_SELECTOR, [val[0], val[2]])
423
453
  result
424
454
  end
425
455
 
456
+ # reduce 20 omitted
457
+
426
458
  def _reduce_21(val, _values, result)
427
- result = Node.new(:ELEMENT_NAME,
428
- [[val.first, val.last].compact.join(':')]
429
- )
430
-
459
+ result = Node.new(:CLASS_CONDITION, [unescape_css_identifier(val[1])])
431
460
  result
432
461
  end
433
462
 
434
- def _reduce_22(val, _values, result)
435
- name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first
436
- result = Node.new(:ELEMENT_NAME, [name])
437
-
438
- result
439
- end
463
+ # reduce 22 omitted
440
464
 
441
465
  def _reduce_23(val, _values, result)
442
- result = val[0]
466
+ result = Node.new(:ELEMENT_NAME, val)
443
467
  result
444
468
  end
445
469
 
446
- # reduce 24 omitted
470
+ def _reduce_24(val, _values, result)
471
+ result = Node.new(:ELEMENT_NAME, [[val[0], val[2]].compact.join(':')])
472
+ result
473
+ end
447
474
 
448
475
  def _reduce_25(val, _values, result)
449
- result = Node.new(:ATTRIBUTE_CONDITION,
450
- [val[1]] + (val[2] || [])
451
- )
452
-
476
+ name = @namespaces.key?('xmlns') ? "xmlns:#{val[0]}" : val[0]
477
+ result = Node.new(:ELEMENT_NAME, [name])
478
+
453
479
  result
454
480
  end
455
481
 
456
482
  def _reduce_26(val, _values, result)
457
- result = Node.new(:ATTRIBUTE_CONDITION,
458
- [val[1]] + (val[2] || [])
459
- )
460
-
483
+ result = val[0]
461
484
  result
462
485
  end
463
486
 
464
- def _reduce_27(val, _values, result)
465
- # Non standard, but hpricot supports it.
466
- result = Node.new(:PSEUDO_CLASS,
467
- [Node.new(:FUNCTION, ['nth-child(', val[1]])]
468
- )
469
-
470
- result
471
- end
487
+ # reduce 27 omitted
472
488
 
473
489
  def _reduce_28(val, _values, result)
474
- result = Node.new(:ELEMENT_NAME,
475
- [[val.first, val.last].compact.join(':')]
476
- )
477
-
490
+ result = Node.new(:ATTRIBUTE_CONDITION, [val[1]] + (val[2] || []))
491
+
478
492
  result
479
493
  end
480
494
 
481
495
  def _reduce_29(val, _values, result)
482
- # Default namespace is not applied to attributes.
483
- # So we don't add prefix "xmlns:" as in namespaced_ident.
484
- result = Node.new(:ELEMENT_NAME, [val.first])
485
-
496
+ result = Node.new(:ATTRIBUTE_CONDITION, [val[1]] + (val[2] || []))
497
+
486
498
  result
487
499
  end
488
500
 
489
501
  def _reduce_30(val, _values, result)
490
- result = Node.new(:FUNCTION, [val.first.strip])
491
-
502
+ result = Node.new(:PSEUDO_CLASS, [Node.new(:FUNCTION, ['nth-child(', val[1]])])
503
+
492
504
  result
493
505
  end
494
506
 
495
507
  def _reduce_31(val, _values, result)
496
- result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
497
-
508
+ result = Node.new(:ATTRIB_NAME, [[val[0], val[2]].compact.join(':')])
498
509
  result
499
510
  end
500
511
 
501
512
  def _reduce_32(val, _values, result)
502
- result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
503
-
513
+ result = Node.new(:ATTRIB_NAME, [val[0]])
504
514
  result
505
515
  end
506
516
 
507
- def _reduce_33(val, _values, result)
508
- result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
509
-
510
- result
511
- end
517
+ # reduce 33 omitted
512
518
 
513
519
  def _reduce_34(val, _values, result)
514
- result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
515
-
520
+ result = Node.new(:FUNCTION, [val[0].strip])
521
+
516
522
  result
517
523
  end
518
524
 
519
525
  def _reduce_35(val, _values, result)
520
- result = [val.first, val.last]
526
+ result = Node.new(:FUNCTION, [val[0].strip, val[1]].flatten)
527
+
521
528
  result
522
529
  end
523
530
 
524
531
  def _reduce_36(val, _values, result)
525
- result = [val.first, val.last]
532
+ result = Node.new(:FUNCTION, [val[0].strip, val[1]].flatten)
533
+
526
534
  result
527
535
  end
528
536
 
529
537
  def _reduce_37(val, _values, result)
530
- result = [val.first, val.last]
538
+ result = Node.new(:FUNCTION, [val[0].strip, val[1]].flatten)
539
+
531
540
  result
532
541
  end
533
542
 
534
- # reduce 38 omitted
535
-
536
- # reduce 39 omitted
543
+ def _reduce_38(val, _values, result)
544
+ result = Node.new(:FUNCTION, [val[0].strip, val[1]].flatten)
537
545
 
538
- def _reduce_40(val, _values, result)
539
- case val[0]
540
- when 'even'
541
- result = Node.new(:NTH, ['2','n','+','0'])
542
- when 'odd'
543
- result = Node.new(:NTH, ['2','n','+','1'])
544
- when 'n'
545
- result = Node.new(:NTH, ['1','n','+','0'])
546
- else
547
- # This is not CSS standard. It allows us to support this:
548
- # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
549
- # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
550
- # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)'))
551
- result = val
552
- end
553
-
554
546
  result
555
547
  end
556
548
 
557
- def _reduce_41(val, _values, result)
558
- if val[1] == 'n'
559
- result = Node.new(:NTH, val)
560
- else
561
- raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
562
- end
563
-
549
+ def _reduce_39(val, _values, result)
550
+ result = [val[0], val[2]]
564
551
  result
565
552
  end
566
553
 
567
- def _reduce_42(val, _values, result)
568
- # n+3, -n+3
569
- if val[0] == 'n'
570
- val.unshift("1")
571
- result = Node.new(:NTH, val)
572
- elsif val[0] == '-n'
573
- val[0] = 'n'
574
- val.unshift("-1")
575
- result = Node.new(:NTH, val)
576
- else
577
- raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
578
- end
579
-
554
+ def _reduce_40(val, _values, result)
555
+ result = [val[0], val[2]]
580
556
  result
581
557
  end
582
558
 
583
- def _reduce_43(val, _values, result)
584
- # 5n, -5n, 10n-1
585
- n = val[1]
586
- if n[0, 2] == 'n-'
587
- val[1] = 'n'
588
- val << "-"
589
- # b is contained in n as n is the string "n-b"
590
- val << n[2, n.size]
591
- result = Node.new(:NTH, val)
592
- elsif n == 'n'
593
- val << "+"
594
- val << "0"
595
- result = Node.new(:NTH, val)
596
- else
597
- raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
598
- end
599
-
559
+ def _reduce_41(val, _values, result)
560
+ result = [val[0], val[2]]
600
561
  result
601
562
  end
602
563
 
603
- def _reduce_44(val, _values, result)
604
- result = Node.new(:PSEUDO_CLASS, [val[1]])
605
-
564
+ def _reduce_42(val, _values, result)
565
+ result = [val[0], val[2]]
606
566
  result
607
567
  end
608
568
 
569
+ # reduce 43 omitted
570
+
571
+ # reduce 44 omitted
572
+
609
573
  def _reduce_45(val, _values, result)
610
- result = Node.new(:PSEUDO_CLASS, [val[1]])
574
+ case val[0]
575
+ when 'even'
576
+ result = Node.new(:NTH, ['2','n','+','0'])
577
+ when 'odd'
578
+ result = Node.new(:NTH, ['2','n','+','1'])
579
+ when 'n'
580
+ result = Node.new(:NTH, ['1','n','+','0'])
581
+ else
582
+ result = val
583
+ end
584
+
611
585
  result
612
586
  end
613
587
 
614
588
  # reduce 46 omitted
615
589
 
616
- # reduce 47 omitted
590
+ def _reduce_47(val, _values, result)
591
+ if val[1] == 'n'
592
+ result = Node.new(:NTH, val)
593
+ else
594
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
595
+ end
596
+
597
+ result
598
+ end
617
599
 
618
600
  def _reduce_48(val, _values, result)
619
- result = Node.new(:COMBINATOR, val)
620
-
601
+ # n+3, -n+3
602
+ if val[0] == 'n'
603
+ val.unshift("1")
604
+ result = Node.new(:NTH, val)
605
+ elsif val[0] == '-n'
606
+ val[0] = 'n'
607
+ val.unshift("-1")
608
+ result = Node.new(:NTH, val)
609
+ else
610
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
611
+ end
612
+
621
613
  result
622
614
  end
623
615
 
624
616
  def _reduce_49(val, _values, result)
625
- result = Node.new(:COMBINATOR, val)
626
-
617
+ # 5n, -5n, 10n-1
618
+ n = val[1]
619
+ if n[0, 2] == 'n-'
620
+ val[1] = 'n'
621
+ val << "-"
622
+ # b is contained in n as n is the string "n-b"
623
+ val << n[2, n.size]
624
+ result = Node.new(:NTH, val)
625
+ elsif n == 'n'
626
+ val << "+"
627
+ val << "0"
628
+ result = Node.new(:NTH, val)
629
+ else
630
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
631
+ end
632
+
627
633
  result
628
634
  end
629
635
 
630
636
  def _reduce_50(val, _values, result)
631
- result = Node.new(:COMBINATOR, val)
632
-
637
+ result = Node.new(:PSEUDO_CLASS, [val[1]])
638
+
633
639
  result
634
640
  end
635
641
 
636
642
  def _reduce_51(val, _values, result)
637
- result = Node.new(:COMBINATOR, val)
638
-
643
+ result = Node.new(:PSEUDO_CLASS, [val[1]])
639
644
  result
640
645
  end
641
646
 
642
- def _reduce_52(val, _values, result)
643
- result = Node.new(:COMBINATOR, val)
644
-
647
+ # reduce 52 omitted
648
+
649
+ # reduce 53 omitted
650
+
651
+ def _reduce_54(val, _values, result)
652
+ result = Node.new(:COMBINATOR, val)
653
+
645
654
  result
646
655
  end
647
656
 
648
- # reduce 53 omitted
657
+ def _reduce_55(val, _values, result)
658
+ result = Node.new(:COMBINATOR, val)
649
659
 
650
- # reduce 54 omitted
660
+ result
661
+ end
651
662
 
652
- # reduce 55 omitted
663
+ def _reduce_56(val, _values, result)
664
+ result = Node.new(:COMBINATOR, val)
653
665
 
654
- # reduce 56 omitted
666
+ result
667
+ end
655
668
 
656
- # reduce 57 omitted
669
+ def _reduce_57(val, _values, result)
670
+ result = Node.new(:COMBINATOR, val)
671
+
672
+ result
673
+ end
657
674
 
658
675
  def _reduce_58(val, _values, result)
659
- result = Node.new(:ID, [unescape_css_identifier(val.first)])
676
+ result = Node.new(:COMBINATOR, val)
677
+
660
678
  result
661
679
  end
662
680
 
663
- def _reduce_59(val, _values, result)
664
- result = [val.first, val[1]]
681
+ # reduce 59 omitted
682
+
683
+ # reduce 60 omitted
684
+
685
+ # reduce 61 omitted
686
+
687
+ # reduce 62 omitted
688
+
689
+ # reduce 63 omitted
690
+
691
+ def _reduce_64(val, _values, result)
692
+ result = Node.new(:ID, [unescape_css_identifier(val[0])])
665
693
  result
666
694
  end
667
695
 
668
- def _reduce_60(val, _values, result)
669
- result = [val.first, val[1]]
696
+ def _reduce_65(val, _values, result)
697
+ result = [val[0], unescape_css_identifier(val[1])]
670
698
  result
671
699
  end
672
700
 
673
- # reduce 61 omitted
701
+ def _reduce_66(val, _values, result)
702
+ result = [val[0], unescape_css_string(val[1])]
703
+ result
704
+ end
705
+
706
+ def _reduce_67(val, _values, result)
707
+ result = [val[0], val[1]]
708
+ result
709
+ end
674
710
 
675
- def _reduce_62(val, _values, result)
676
- result = :equal
711
+ # reduce 68 omitted
712
+
713
+ def _reduce_69(val, _values, result)
714
+ result = :equal
677
715
  result
678
716
  end
679
717
 
680
- def _reduce_63(val, _values, result)
681
- result = :prefix_match
718
+ def _reduce_70(val, _values, result)
719
+ result = :prefix_match
682
720
  result
683
721
  end
684
722
 
685
- def _reduce_64(val, _values, result)
686
- result = :suffix_match
723
+ def _reduce_71(val, _values, result)
724
+ result = :suffix_match
687
725
  result
688
726
  end
689
727
 
690
- def _reduce_65(val, _values, result)
691
- result = :substring_match
728
+ def _reduce_72(val, _values, result)
729
+ result = :substring_match
692
730
  result
693
731
  end
694
732
 
695
- def _reduce_66(val, _values, result)
696
- result = :not_equal
733
+ def _reduce_73(val, _values, result)
734
+ result = :not_equal
697
735
  result
698
736
  end
699
737
 
700
- def _reduce_67(val, _values, result)
701
- result = :includes
738
+ def _reduce_74(val, _values, result)
739
+ result = :includes
702
740
  result
703
741
  end
704
742
 
705
- def _reduce_68(val, _values, result)
706
- result = :dash_match
743
+ def _reduce_75(val, _values, result)
744
+ result = :dash_match
707
745
  result
708
746
  end
709
747
 
710
- def _reduce_69(val, _values, result)
711
- result = Node.new(:NOT, [val[1]])
712
-
748
+ def _reduce_76(val, _values, result)
749
+ result = Node.new(:NOT, [val[1]])
750
+
713
751
  result
714
752
  end
715
753
 
716
- # reduce 70 omitted
754
+ # reduce 77 omitted
717
755
 
718
- # reduce 71 omitted
756
+ # reduce 78 omitted
719
757
 
720
- # reduce 72 omitted
758
+ # reduce 79 omitted
721
759
 
722
- # reduce 73 omitted
760
+ # reduce 80 omitted
723
761
 
724
- # reduce 74 omitted
762
+ # reduce 81 omitted
725
763
 
726
764
  def _reduce_none(val, _values, result)
727
765
  val[0]
728
766
  end
729
767
 
730
768
  end # class Parser
731
- end # module CSS
732
- end # module Nokogiri
769
+ end # module CSS
770
+ end # module Nokogiri