nokogiri 1.5.10 → 1.12.5

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