nokogiri-backport 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (239) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE-DEPENDENCIES.md +1682 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +272 -0
  6. data/bin/nokogiri +118 -0
  7. data/dependencies.yml +74 -0
  8. data/ext/java/nokogiri/EncodingHandler.java +124 -0
  9. data/ext/java/nokogiri/HtmlDocument.java +178 -0
  10. data/ext/java/nokogiri/HtmlElementDescription.java +148 -0
  11. data/ext/java/nokogiri/HtmlEntityLookup.java +79 -0
  12. data/ext/java/nokogiri/HtmlSaxParserContext.java +282 -0
  13. data/ext/java/nokogiri/HtmlSaxPushParser.java +222 -0
  14. data/ext/java/nokogiri/NokogiriService.java +597 -0
  15. data/ext/java/nokogiri/XmlAttr.java +162 -0
  16. data/ext/java/nokogiri/XmlAttributeDecl.java +129 -0
  17. data/ext/java/nokogiri/XmlCdata.java +82 -0
  18. data/ext/java/nokogiri/XmlComment.java +97 -0
  19. data/ext/java/nokogiri/XmlDocument.java +633 -0
  20. data/ext/java/nokogiri/XmlDocumentFragment.java +185 -0
  21. data/ext/java/nokogiri/XmlDtd.java +481 -0
  22. data/ext/java/nokogiri/XmlElement.java +68 -0
  23. data/ext/java/nokogiri/XmlElementContent.java +382 -0
  24. data/ext/java/nokogiri/XmlElementDecl.java +147 -0
  25. data/ext/java/nokogiri/XmlEntityDecl.java +157 -0
  26. data/ext/java/nokogiri/XmlEntityReference.java +101 -0
  27. data/ext/java/nokogiri/XmlNamespace.java +199 -0
  28. data/ext/java/nokogiri/XmlNode.java +1684 -0
  29. data/ext/java/nokogiri/XmlNodeSet.java +434 -0
  30. data/ext/java/nokogiri/XmlProcessingInstruction.java +100 -0
  31. data/ext/java/nokogiri/XmlReader.java +531 -0
  32. data/ext/java/nokogiri/XmlRelaxng.java +151 -0
  33. data/ext/java/nokogiri/XmlSaxParserContext.java +374 -0
  34. data/ext/java/nokogiri/XmlSaxPushParser.java +286 -0
  35. data/ext/java/nokogiri/XmlSchema.java +388 -0
  36. data/ext/java/nokogiri/XmlSyntaxError.java +138 -0
  37. data/ext/java/nokogiri/XmlText.java +110 -0
  38. data/ext/java/nokogiri/XmlXpathContext.java +301 -0
  39. data/ext/java/nokogiri/XsltStylesheet.java +347 -0
  40. data/ext/java/nokogiri/internals/ClosedStreamException.java +10 -0
  41. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +252 -0
  42. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +20 -0
  43. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +151 -0
  44. data/ext/java/nokogiri/internals/NokogiriDomParser.java +116 -0
  45. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +121 -0
  46. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +69 -0
  47. data/ext/java/nokogiri/internals/NokogiriHandler.java +327 -0
  48. data/ext/java/nokogiri/internals/NokogiriHelpers.java +734 -0
  49. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +217 -0
  50. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +127 -0
  51. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +100 -0
  52. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +121 -0
  53. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +78 -0
  54. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +180 -0
  55. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +72 -0
  56. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +60 -0
  57. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +87 -0
  58. data/ext/java/nokogiri/internals/ParserContext.java +259 -0
  59. data/ext/java/nokogiri/internals/ReaderNode.java +488 -0
  60. data/ext/java/nokogiri/internals/SaveContextVisitor.java +778 -0
  61. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +73 -0
  62. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +168 -0
  63. data/ext/java/nokogiri/internals/XmlDeclHandler.java +42 -0
  64. data/ext/java/nokogiri/internals/XmlDomParserContext.java +274 -0
  65. data/ext/java/nokogiri/internals/XmlSaxParser.java +65 -0
  66. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +119 -0
  67. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +159 -0
  68. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +37 -0
  69. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +93 -0
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +252 -0
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +639 -0
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +38 -0
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +38 -0
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +367 -0
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +295 -0
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +40 -0
  77. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +44 -0
  78. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +44 -0
  79. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +43 -0
  80. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +630 -0
  81. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +173 -0
  82. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +76 -0
  83. data/ext/java/nokogiri/internals/c14n/Constants.java +42 -0
  84. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +293 -0
  85. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +93 -0
  86. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +79 -0
  87. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +166 -0
  88. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +76 -0
  89. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +402 -0
  90. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +51 -0
  91. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +179 -0
  92. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +507 -0
  93. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1745 -0
  94. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +685 -0
  95. data/ext/nokogiri/depend +477 -0
  96. data/ext/nokogiri/extconf.rb +836 -0
  97. data/ext/nokogiri/html_document.c +171 -0
  98. data/ext/nokogiri/html_document.h +10 -0
  99. data/ext/nokogiri/html_element_description.c +279 -0
  100. data/ext/nokogiri/html_element_description.h +10 -0
  101. data/ext/nokogiri/html_entity_lookup.c +32 -0
  102. data/ext/nokogiri/html_entity_lookup.h +8 -0
  103. data/ext/nokogiri/html_sax_parser_context.c +116 -0
  104. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  105. data/ext/nokogiri/html_sax_push_parser.c +87 -0
  106. data/ext/nokogiri/html_sax_push_parser.h +9 -0
  107. data/ext/nokogiri/nokogiri.c +135 -0
  108. data/ext/nokogiri/nokogiri.h +130 -0
  109. data/ext/nokogiri/xml_attr.c +103 -0
  110. data/ext/nokogiri/xml_attr.h +9 -0
  111. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  112. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  113. data/ext/nokogiri/xml_cdata.c +62 -0
  114. data/ext/nokogiri/xml_cdata.h +9 -0
  115. data/ext/nokogiri/xml_comment.c +69 -0
  116. data/ext/nokogiri/xml_comment.h +9 -0
  117. data/ext/nokogiri/xml_document.c +622 -0
  118. data/ext/nokogiri/xml_document.h +23 -0
  119. data/ext/nokogiri/xml_document_fragment.c +48 -0
  120. data/ext/nokogiri/xml_document_fragment.h +10 -0
  121. data/ext/nokogiri/xml_dtd.c +202 -0
  122. data/ext/nokogiri/xml_dtd.h +10 -0
  123. data/ext/nokogiri/xml_element_content.c +123 -0
  124. data/ext/nokogiri/xml_element_content.h +10 -0
  125. data/ext/nokogiri/xml_element_decl.c +69 -0
  126. data/ext/nokogiri/xml_element_decl.h +9 -0
  127. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  128. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  129. data/ext/nokogiri/xml_entity_decl.c +110 -0
  130. data/ext/nokogiri/xml_entity_decl.h +10 -0
  131. data/ext/nokogiri/xml_entity_reference.c +52 -0
  132. data/ext/nokogiri/xml_entity_reference.h +9 -0
  133. data/ext/nokogiri/xml_io.c +63 -0
  134. data/ext/nokogiri/xml_io.h +11 -0
  135. data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  136. data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  137. data/ext/nokogiri/xml_namespace.c +111 -0
  138. data/ext/nokogiri/xml_namespace.h +14 -0
  139. data/ext/nokogiri/xml_node.c +1773 -0
  140. data/ext/nokogiri/xml_node.h +13 -0
  141. data/ext/nokogiri/xml_node_set.c +486 -0
  142. data/ext/nokogiri/xml_node_set.h +12 -0
  143. data/ext/nokogiri/xml_processing_instruction.c +56 -0
  144. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  145. data/ext/nokogiri/xml_reader.c +657 -0
  146. data/ext/nokogiri/xml_reader.h +10 -0
  147. data/ext/nokogiri/xml_relax_ng.c +179 -0
  148. data/ext/nokogiri/xml_relax_ng.h +9 -0
  149. data/ext/nokogiri/xml_sax_parser.c +305 -0
  150. data/ext/nokogiri/xml_sax_parser.h +39 -0
  151. data/ext/nokogiri/xml_sax_parser_context.c +262 -0
  152. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  153. data/ext/nokogiri/xml_sax_push_parser.c +159 -0
  154. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  155. data/ext/nokogiri/xml_schema.c +276 -0
  156. data/ext/nokogiri/xml_schema.h +9 -0
  157. data/ext/nokogiri/xml_syntax_error.c +64 -0
  158. data/ext/nokogiri/xml_syntax_error.h +13 -0
  159. data/ext/nokogiri/xml_text.c +52 -0
  160. data/ext/nokogiri/xml_text.h +9 -0
  161. data/ext/nokogiri/xml_xpath_context.c +374 -0
  162. data/ext/nokogiri/xml_xpath_context.h +10 -0
  163. data/ext/nokogiri/xslt_stylesheet.c +263 -0
  164. data/ext/nokogiri/xslt_stylesheet.h +14 -0
  165. data/lib/isorelax.jar +0 -0
  166. data/lib/jing.jar +0 -0
  167. data/lib/nekodtd.jar +0 -0
  168. data/lib/nekohtml.jar +0 -0
  169. data/lib/nokogiri/css/node.rb +53 -0
  170. data/lib/nokogiri/css/parser.rb +751 -0
  171. data/lib/nokogiri/css/parser.y +272 -0
  172. data/lib/nokogiri/css/parser_extras.rb +94 -0
  173. data/lib/nokogiri/css/syntax_error.rb +8 -0
  174. data/lib/nokogiri/css/tokenizer.rb +154 -0
  175. data/lib/nokogiri/css/tokenizer.rex +55 -0
  176. data/lib/nokogiri/css/xpath_visitor.rb +260 -0
  177. data/lib/nokogiri/css.rb +28 -0
  178. data/lib/nokogiri/decorators/slop.rb +43 -0
  179. data/lib/nokogiri/html/builder.rb +36 -0
  180. data/lib/nokogiri/html/document.rb +322 -0
  181. data/lib/nokogiri/html/document_fragment.rb +50 -0
  182. data/lib/nokogiri/html/element_description.rb +24 -0
  183. data/lib/nokogiri/html/element_description_defaults.rb +672 -0
  184. data/lib/nokogiri/html/entity_lookup.rb +14 -0
  185. data/lib/nokogiri/html/sax/parser.rb +63 -0
  186. data/lib/nokogiri/html/sax/parser_context.rb +17 -0
  187. data/lib/nokogiri/html/sax/push_parser.rb +37 -0
  188. data/lib/nokogiri/html.rb +38 -0
  189. data/lib/nokogiri/jruby/dependencies.rb +20 -0
  190. data/lib/nokogiri/syntax_error.rb +5 -0
  191. data/lib/nokogiri/version/constant.rb +5 -0
  192. data/lib/nokogiri/version/info.rb +182 -0
  193. data/lib/nokogiri/version.rb +3 -0
  194. data/lib/nokogiri/xml/attr.rb +15 -0
  195. data/lib/nokogiri/xml/attribute_decl.rb +19 -0
  196. data/lib/nokogiri/xml/builder.rb +447 -0
  197. data/lib/nokogiri/xml/cdata.rb +12 -0
  198. data/lib/nokogiri/xml/character_data.rb +8 -0
  199. data/lib/nokogiri/xml/document.rb +290 -0
  200. data/lib/nokogiri/xml/document_fragment.rb +159 -0
  201. data/lib/nokogiri/xml/dtd.rb +33 -0
  202. data/lib/nokogiri/xml/element_content.rb +37 -0
  203. data/lib/nokogiri/xml/element_decl.rb +14 -0
  204. data/lib/nokogiri/xml/entity_decl.rb +20 -0
  205. data/lib/nokogiri/xml/entity_reference.rb +19 -0
  206. data/lib/nokogiri/xml/namespace.rb +14 -0
  207. data/lib/nokogiri/xml/node/save_options.rb +62 -0
  208. data/lib/nokogiri/xml/node.rb +1240 -0
  209. data/lib/nokogiri/xml/node_set.rb +372 -0
  210. data/lib/nokogiri/xml/notation.rb +7 -0
  211. data/lib/nokogiri/xml/parse_options.rb +127 -0
  212. data/lib/nokogiri/xml/pp/character_data.rb +19 -0
  213. data/lib/nokogiri/xml/pp/node.rb +57 -0
  214. data/lib/nokogiri/xml/pp.rb +3 -0
  215. data/lib/nokogiri/xml/processing_instruction.rb +9 -0
  216. data/lib/nokogiri/xml/reader.rb +116 -0
  217. data/lib/nokogiri/xml/relax_ng.rb +37 -0
  218. data/lib/nokogiri/xml/sax/document.rb +172 -0
  219. data/lib/nokogiri/xml/sax/parser.rb +123 -0
  220. data/lib/nokogiri/xml/sax/parser_context.rb +17 -0
  221. data/lib/nokogiri/xml/sax/push_parser.rb +61 -0
  222. data/lib/nokogiri/xml/sax.rb +5 -0
  223. data/lib/nokogiri/xml/schema.rb +72 -0
  224. data/lib/nokogiri/xml/searchable.rb +239 -0
  225. data/lib/nokogiri/xml/syntax_error.rb +71 -0
  226. data/lib/nokogiri/xml/text.rb +10 -0
  227. data/lib/nokogiri/xml/xpath/syntax_error.rb +12 -0
  228. data/lib/nokogiri/xml/xpath.rb +11 -0
  229. data/lib/nokogiri/xml/xpath_context.rb +17 -0
  230. data/lib/nokogiri/xml.rb +76 -0
  231. data/lib/nokogiri/xslt/stylesheet.rb +26 -0
  232. data/lib/nokogiri/xslt.rb +57 -0
  233. data/lib/nokogiri.rb +144 -0
  234. data/lib/serializer.jar +0 -0
  235. data/lib/xalan.jar +0 -0
  236. data/lib/xercesImpl.jar +0 -0
  237. data/lib/xml-apis.jar +0 -0
  238. data/lib/xsd/xmlparser/nokogiri.rb +103 -0
  239. metadata +531 -0
@@ -0,0 +1,751 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # DO NOT MODIFY!!!!
4
+ # This file is automatically generated by Racc 1.5.1
5
+ # from Racc grammar file "".
6
+ #
7
+
8
+ require 'racc/parser.rb'
9
+
10
+
11
+ require 'nokogiri/css/parser_extras'
12
+
13
+ module Nokogiri
14
+ module CSS
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
31
+ ##### State transition tables begin ###
32
+
33
+ racc_action_table = [
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 ]
56
+
57
+ racc_action_check = [
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 ]
80
+
81
+ racc_action_pointer = [
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 ]
94
+
95
+ racc_action_default = [
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 ]
108
+
109
+ racc_goto_table = [
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,
113
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
114
+ nil, 72, 73, nil, nil, nil, nil, nil, nil, 97,
115
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
116
+ nil, nil, nil, nil, nil, nil, 105, nil, 107, 108 ]
117
+
118
+ racc_goto_check = [
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,
122
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
123
+ nil, 2, 2, nil, nil, nil, nil, nil, nil, 12,
124
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
125
+ nil, nil, nil, nil, nil, nil, 18, nil, 18, 18 ]
126
+
127
+ racc_goto_pointer = [
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 ]
131
+
132
+ racc_goto_default = [
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 ]
136
+
137
+ racc_reduce_table = [
138
+ 0, 0, :racc_error,
139
+ 3, 32, :_reduce_1,
140
+ 1, 32, :_reduce_2,
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,
148
+ 1, 37, :_reduce_none,
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,
162
+ 0, 46, :_reduce_none,
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,
176
+ 1, 49, :_reduce_none,
177
+ 1, 49, :_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,
184
+ 1, 39, :_reduce_none,
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,
198
+ 2, 48, :_reduce_60,
199
+ 2, 48, :_reduce_61,
200
+ 0, 48, :_reduce_none,
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
218
+
219
+ racc_token_table = {
220
+ false => 0,
221
+ :error => 1,
222
+ :FUNCTION => 2,
223
+ :INCLUDES => 3,
224
+ :DASHMATCH => 4,
225
+ :LBRACE => 5,
226
+ :HASH => 6,
227
+ :PLUS => 7,
228
+ :GREATER => 8,
229
+ :S => 9,
230
+ :STRING => 10,
231
+ :IDENT => 11,
232
+ :COMMA => 12,
233
+ :NUMBER => 13,
234
+ :PREFIXMATCH => 14,
235
+ :SUFFIXMATCH => 15,
236
+ :SUBSTRINGMATCH => 16,
237
+ :TILDE => 17,
238
+ :NOT_EQUAL => 18,
239
+ :SLASH => 19,
240
+ :DOUBLESLASH => 20,
241
+ :NOT => 21,
242
+ :EQUAL => 22,
243
+ :RPAREN => 23,
244
+ :LSQUARE => 24,
245
+ :RSQUARE => 25,
246
+ :HAS => 26,
247
+ "." => 27,
248
+ "*" => 28,
249
+ "|" => 29,
250
+ ":" => 30 }
251
+
252
+ racc_nt_base = 31
253
+
254
+ racc_use_result_var = true
255
+
256
+ Racc_arg = [
257
+ racc_action_table,
258
+ racc_action_check,
259
+ racc_action_default,
260
+ racc_action_pointer,
261
+ racc_goto_table,
262
+ racc_goto_check,
263
+ racc_goto_default,
264
+ racc_goto_pointer,
265
+ racc_nt_base,
266
+ racc_reduce_table,
267
+ racc_token_table,
268
+ racc_shift_n,
269
+ racc_reduce_n,
270
+ racc_use_result_var ]
271
+
272
+ Racc_token_to_s_table = [
273
+ "$end",
274
+ "error",
275
+ "FUNCTION",
276
+ "INCLUDES",
277
+ "DASHMATCH",
278
+ "LBRACE",
279
+ "HASH",
280
+ "PLUS",
281
+ "GREATER",
282
+ "S",
283
+ "STRING",
284
+ "IDENT",
285
+ "COMMA",
286
+ "NUMBER",
287
+ "PREFIXMATCH",
288
+ "SUFFIXMATCH",
289
+ "SUBSTRINGMATCH",
290
+ "TILDE",
291
+ "NOT_EQUAL",
292
+ "SLASH",
293
+ "DOUBLESLASH",
294
+ "NOT",
295
+ "EQUAL",
296
+ "RPAREN",
297
+ "LSQUARE",
298
+ "RSQUARE",
299
+ "HAS",
300
+ "\".\"",
301
+ "\"*\"",
302
+ "\"|\"",
303
+ "\":\"",
304
+ "$start",
305
+ "selector",
306
+ "simple_selector_1toN",
307
+ "prefixless_combinator_selector",
308
+ "optional_S",
309
+ "combinator",
310
+ "simple_selector",
311
+ "element_name",
312
+ "hcap_0toN",
313
+ "function",
314
+ "pseudo",
315
+ "attrib",
316
+ "hcap_1toN",
317
+ "class",
318
+ "namespaced_ident",
319
+ "namespace",
320
+ "attrib_name",
321
+ "attrib_val_0or1",
322
+ "expr",
323
+ "nth",
324
+ "attribute_id",
325
+ "negation",
326
+ "eql_incl_dash",
327
+ "negation_arg" ]
328
+
329
+ Racc_debug_parser = false
330
+
331
+ ##### State transition tables end #####
332
+
333
+ # reduce 0 omitted
334
+
335
+ def _reduce_1(val, _values, result)
336
+ result = [val.first, val.last].flatten
337
+
338
+ result
339
+ end
340
+
341
+ def _reduce_2(val, _values, result)
342
+ result = val.flatten
343
+ result
344
+ end
345
+
346
+ def _reduce_3(val, _values, result)
347
+ result = [val.last].flatten
348
+ result
349
+ end
350
+
351
+ def _reduce_4(val, _values, result)
352
+ result = :DIRECT_ADJACENT_SELECTOR
353
+ result
354
+ end
355
+
356
+ def _reduce_5(val, _values, result)
357
+ result = :CHILD_SELECTOR
358
+ result
359
+ end
360
+
361
+ def _reduce_6(val, _values, result)
362
+ result = :FOLLOWING_SELECTOR
363
+ result
364
+ end
365
+
366
+ def _reduce_7(val, _values, result)
367
+ result = :DESCENDANT_SELECTOR
368
+ result
369
+ end
370
+
371
+ def _reduce_8(val, _values, result)
372
+ result = :CHILD_SELECTOR
373
+ result
374
+ end
375
+
376
+ def _reduce_9(val, _values, result)
377
+ result = if val[1].nil?
378
+ val.first
379
+ else
380
+ Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]])
381
+ end
382
+
383
+ result
384
+ end
385
+
386
+ # reduce 10 omitted
387
+
388
+ def _reduce_11(val, _values, result)
389
+ result = Node.new(:CONDITIONAL_SELECTOR, val)
390
+
391
+ result
392
+ end
393
+
394
+ def _reduce_12(val, _values, result)
395
+ result = Node.new(:CONDITIONAL_SELECTOR, val)
396
+
397
+ result
398
+ end
399
+
400
+ def _reduce_13(val, _values, result)
401
+ result = Node.new(:CONDITIONAL_SELECTOR,
402
+ [Node.new(:ELEMENT_NAME, ['*']), val.first]
403
+ )
404
+
405
+ result
406
+ end
407
+
408
+ def _reduce_14(val, _values, result)
409
+ result = Node.new(val.first, [nil, val.last])
410
+
411
+ result
412
+ end
413
+
414
+ def _reduce_15(val, _values, result)
415
+ result = Node.new(val[1], [val.first, val.last])
416
+
417
+ result
418
+ end
419
+
420
+ def _reduce_16(val, _values, result)
421
+ result = Node.new(:DESCENDANT_SELECTOR, [val.first, val.last])
422
+
423
+ result
424
+ end
425
+
426
+ # reduce 17 omitted
427
+
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)
437
+ result
438
+ end
439
+
440
+ def _reduce_21(val, _values, result)
441
+ result = Node.new(:ELEMENT_NAME,
442
+ [[val.first, val.last].compact.join(':')]
443
+ )
444
+
445
+ result
446
+ end
447
+
448
+ def _reduce_22(val, _values, result)
449
+ name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first
450
+ result = Node.new(:ELEMENT_NAME, [name])
451
+
452
+ result
453
+ end
454
+
455
+ def _reduce_23(val, _values, result)
456
+ result = val[0]
457
+ result
458
+ end
459
+
460
+ # reduce 24 omitted
461
+
462
+ def _reduce_25(val, _values, result)
463
+ result = Node.new(:ATTRIBUTE_CONDITION,
464
+ [val[1]] + (val[2] || [])
465
+ )
466
+
467
+ result
468
+ end
469
+
470
+ def _reduce_26(val, _values, result)
471
+ result = Node.new(:ATTRIBUTE_CONDITION,
472
+ [val[1]] + (val[2] || [])
473
+ )
474
+
475
+ result
476
+ end
477
+
478
+ def _reduce_27(val, _values, result)
479
+ # non-standard, from hpricot
480
+ result = Node.new(:PSEUDO_CLASS,
481
+ [Node.new(:FUNCTION, ['nth-child(', val[1]])]
482
+ )
483
+
484
+ result
485
+ end
486
+
487
+ def _reduce_28(val, _values, result)
488
+ result = Node.new(:ELEMENT_NAME,
489
+ [[val.first, val.last].compact.join(':')]
490
+ )
491
+
492
+ result
493
+ end
494
+
495
+ def _reduce_29(val, _values, result)
496
+ # Default namespace is not applied to attributes.
497
+ # So we don't add prefix "xmlns:" as in namespaced_ident.
498
+ result = Node.new(:ELEMENT_NAME, [val.first])
499
+
500
+ result
501
+ end
502
+
503
+ def _reduce_30(val, _values, result)
504
+ result = Node.new(:FUNCTION, [val.first.strip])
505
+
506
+ result
507
+ end
508
+
509
+ def _reduce_31(val, _values, result)
510
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
511
+
512
+ result
513
+ end
514
+
515
+ def _reduce_32(val, _values, result)
516
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
517
+
518
+ result
519
+ end
520
+
521
+ def _reduce_33(val, _values, result)
522
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
523
+
524
+ result
525
+ end
526
+
527
+ def _reduce_34(val, _values, result)
528
+ result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
529
+
530
+ result
531
+ end
532
+
533
+ def _reduce_35(val, _values, result)
534
+ result = [val.first, val.last]
535
+ result
536
+ end
537
+
538
+ def _reduce_36(val, _values, result)
539
+ result = [val.first, val.last]
540
+ result
541
+ end
542
+
543
+ def _reduce_37(val, _values, result)
544
+ result = [val.first, val.last]
545
+ result
546
+ end
547
+
548
+ # reduce 38 omitted
549
+
550
+ # reduce 39 omitted
551
+
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'])
560
+ else
561
+ # non-standard to support custom functions:
562
+ # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
563
+ # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
564
+ # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)'))
565
+ result = val
566
+ end
567
+
568
+ result
569
+ end
570
+
571
+ def _reduce_41(val, _values, result)
572
+ if val[1] == 'n'
573
+ result = Node.new(:NTH, val)
574
+ else
575
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
576
+ end
577
+
578
+ result
579
+ end
580
+
581
+ def _reduce_42(val, _values, result)
582
+ # n+3, -n+3
583
+ if val[0] == 'n'
584
+ val.unshift("1")
585
+ result = Node.new(:NTH, val)
586
+ elsif val[0] == '-n'
587
+ val[0] = 'n'
588
+ val.unshift("-1")
589
+ result = Node.new(:NTH, val)
590
+ else
591
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
592
+ end
593
+
594
+ result
595
+ end
596
+
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'
607
+ val << "+"
608
+ val << "0"
609
+ result = Node.new(:NTH, val)
610
+ else
611
+ raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
612
+ end
613
+
614
+ result
615
+ end
616
+
617
+ def _reduce_44(val, _values, result)
618
+ result = Node.new(:PSEUDO_CLASS, [val[1]])
619
+
620
+ result
621
+ end
622
+
623
+ def _reduce_45(val, _values, result)
624
+ result = Node.new(:PSEUDO_CLASS, [val[1]])
625
+ result
626
+ end
627
+
628
+ # reduce 46 omitted
629
+
630
+ # reduce 47 omitted
631
+
632
+ def _reduce_48(val, _values, result)
633
+ result = Node.new(:COMBINATOR, val)
634
+
635
+ result
636
+ end
637
+
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)
645
+ result = Node.new(:COMBINATOR, val)
646
+
647
+ result
648
+ end
649
+
650
+ def _reduce_51(val, _values, result)
651
+ result = Node.new(:COMBINATOR, val)
652
+
653
+ result
654
+ end
655
+
656
+ def _reduce_52(val, _values, result)
657
+ result = Node.new(:COMBINATOR, val)
658
+
659
+ result
660
+ end
661
+
662
+ # reduce 53 omitted
663
+
664
+ # reduce 54 omitted
665
+
666
+ # reduce 55 omitted
667
+
668
+ # reduce 56 omitted
669
+
670
+ # reduce 57 omitted
671
+
672
+ def _reduce_58(val, _values, result)
673
+ result = Node.new(:ID, [unescape_css_identifier(val.first)])
674
+ result
675
+ end
676
+
677
+ def _reduce_59(val, _values, result)
678
+ result = [val.first, unescape_css_identifier(val[1])]
679
+ result
680
+ end
681
+
682
+ def _reduce_60(val, _values, result)
683
+ result = [val.first, unescape_css_string(val[1])]
684
+ result
685
+ end
686
+
687
+ def _reduce_61(val, _values, result)
688
+ result = [val.first, val[1]]
689
+ result
690
+ end
691
+
692
+ # reduce 62 omitted
693
+
694
+ def _reduce_63(val, _values, result)
695
+ result = :equal
696
+ result
697
+ end
698
+
699
+ def _reduce_64(val, _values, result)
700
+ result = :prefix_match
701
+ result
702
+ end
703
+
704
+ def _reduce_65(val, _values, result)
705
+ result = :suffix_match
706
+ result
707
+ end
708
+
709
+ def _reduce_66(val, _values, result)
710
+ result = :substring_match
711
+ result
712
+ end
713
+
714
+ def _reduce_67(val, _values, result)
715
+ result = :not_equal
716
+ result
717
+ end
718
+
719
+ def _reduce_68(val, _values, result)
720
+ result = :includes
721
+ result
722
+ end
723
+
724
+ def _reduce_69(val, _values, result)
725
+ result = :dash_match
726
+ result
727
+ end
728
+
729
+ def _reduce_70(val, _values, result)
730
+ result = Node.new(:NOT, [val[1]])
731
+
732
+ result
733
+ end
734
+
735
+ # reduce 71 omitted
736
+
737
+ # reduce 72 omitted
738
+
739
+ # reduce 73 omitted
740
+
741
+ # reduce 74 omitted
742
+
743
+ # reduce 75 omitted
744
+
745
+ def _reduce_none(val, _values, result)
746
+ val[0]
747
+ end
748
+
749
+ end # class Parser
750
+ end # module CSS
751
+ end # module Nokogiri