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,672 @@
1
+ # frozen_string_literal: true
2
+ module Nokogiri
3
+ module HTML
4
+ class ElementDescription
5
+
6
+ # Methods are defined protected by method_defined? because at
7
+ # this point the C-library or Java library is already loaded,
8
+ # and we don't want to clobber any methods that have been
9
+ # defined there.
10
+
11
+ Desc = Struct.new("HTMLElementDescription", :name,
12
+ :startTag, :endTag, :saveEndTag,
13
+ :empty, :depr, :dtd, :isinline,
14
+ :desc,
15
+ :subelts, :defaultsubelt,
16
+ :attrs_opt, :attrs_depr, :attrs_req)
17
+
18
+ # This is filled in down below.
19
+ DefaultDescriptions = Hash.new()
20
+
21
+ def default_desc
22
+ DefaultDescriptions[name.downcase]
23
+ end
24
+ private :default_desc
25
+
26
+ unless method_defined? :implied_start_tag?
27
+ def implied_start_tag?
28
+ d = default_desc
29
+ d ? d.startTag : nil
30
+ end
31
+ end
32
+
33
+ unless method_defined? :implied_end_tag?
34
+ def implied_end_tag?
35
+ d = default_desc
36
+ d ? d.endTag : nil
37
+ end
38
+ end
39
+
40
+ unless method_defined? :save_end_tag?
41
+ def save_end_tag?
42
+ d = default_desc
43
+ d ? d.saveEndTag : nil
44
+ end
45
+ end
46
+
47
+ unless method_defined? :deprecated?
48
+ def deprecated?
49
+ d = default_desc
50
+ d ? d.depr : nil
51
+ end
52
+ end
53
+
54
+ unless method_defined? :description
55
+ def description
56
+ d = default_desc
57
+ d ? d.desc : nil
58
+ end
59
+ end
60
+
61
+ unless method_defined? :default_sub_element
62
+ def default_sub_element
63
+ d = default_desc
64
+ d ? d.defaultsubelt : nil
65
+ end
66
+ end
67
+
68
+ unless method_defined? :optional_attributes
69
+ def optional_attributes
70
+ d = default_desc
71
+ d ? d.attrs_opt : []
72
+ end
73
+ end
74
+
75
+ unless method_defined? :deprecated_attributes
76
+ def deprecated_attributes
77
+ d = default_desc
78
+ d ? d.attrs_depr : []
79
+ end
80
+ end
81
+
82
+ unless method_defined? :required_attributes
83
+ def required_attributes
84
+ d = default_desc
85
+ d ? d.attrs_req : []
86
+ end
87
+ end
88
+
89
+ ###
90
+ # Default Element Descriptions (HTML 4.0) copied from
91
+ # libxml2/HTMLparser.c and libxml2/include/libxml/HTMLparser.h
92
+ #
93
+ # The copyright notice for those files and the following list of
94
+ # element and attribute descriptions is reproduced here:
95
+ #
96
+ # Except where otherwise noted in the source code (e.g. the
97
+ # files hash.c, list.c and the trio files, which are covered by
98
+ # a similar licence but with different Copyright notices) all
99
+ # the files are:
100
+ #
101
+ # Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.
102
+ #
103
+ # Permission is hereby granted, free of charge, to any person
104
+ # obtaining a copy of this software and associated documentation
105
+ # files (the "Software"), to deal in the Software without
106
+ # restriction, including without limitation the rights to use,
107
+ # copy, modify, merge, publish, distribute, sublicense, and/or
108
+ # sell copies of the Software, and to permit persons to whom the
109
+ # Software is fur- nished to do so, subject to the following
110
+ # conditions:
111
+
112
+ # The above copyright notice and this permission notice shall be
113
+ # included in all copies or substantial portions of the
114
+ # Software.
115
+
116
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
117
+ # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
118
+ # WARRANTIES OF MERCHANTABILITY, FIT- NESS FOR A PARTICULAR
119
+ # PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE DANIEL
120
+ # VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
121
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
122
+ # FROM, OUT OF OR IN CON- NECTION WITH THE SOFTWARE OR THE USE
123
+ # OR OTHER DEALINGS IN THE SOFTWARE.
124
+
125
+ # Except as contained in this notice, the name of Daniel
126
+ # Veillard shall not be used in advertising or otherwise to
127
+ # promote the sale, use or other deal- ings in this Software
128
+ # without prior written authorization from him.
129
+
130
+ # Attributes defined and categorized
131
+ FONTSTYLE = ["tt", "i", "b", "u", "s", "strike", "big", "small"]
132
+ PHRASE = ['em', 'strong', 'dfn', 'code', 'samp',
133
+ 'kbd', 'var', 'cite', 'abbr', 'acronym']
134
+ SPECIAL = ['a', 'img', 'applet', 'embed', 'object', 'font','basefont',
135
+ 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo',
136
+ 'iframe']
137
+ PCDATA = []
138
+ HEADING = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
139
+ LIST = ['ul', 'ol', 'dir', 'menu']
140
+ FORMCTRL = ['input', 'select', 'textarea', 'label', 'button']
141
+ BLOCK = [HEADING, LIST, 'pre', 'p', 'dl', 'div', 'center', 'noscript',
142
+ 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table',
143
+ 'fieldset', 'address']
144
+ INLINE = [PCDATA, FONTSTYLE, PHRASE, SPECIAL, FORMCTRL]
145
+ FLOW = [BLOCK, INLINE]
146
+ MODIFIER = []
147
+ EMPTY = []
148
+
149
+ HTML_FLOW = FLOW
150
+ HTML_INLINE = INLINE
151
+ HTML_PCDATA = PCDATA
152
+ HTML_CDATA = HTML_PCDATA
153
+
154
+ COREATTRS = ['id', 'class', 'style', 'title']
155
+ I18N = ['lang', 'dir']
156
+ EVENTS = ['onclick', 'ondblclick', 'onmousedown', 'onmouseup',
157
+ 'onmouseover', 'onmouseout', 'onkeypress', 'onkeydown',
158
+ 'onkeyup']
159
+ ATTRS = [COREATTRS, I18N,EVENTS]
160
+ CELLHALIGN = ['align', 'char', 'charoff']
161
+ CELLVALIGN = ['valign']
162
+
163
+ HTML_ATTRS = ATTRS
164
+ CORE_I18N_ATTRS = [COREATTRS, I18N]
165
+ CORE_ATTRS = COREATTRS
166
+ I18N_ATTRS = I18N
167
+
168
+
169
+ A_ATTRS = [ATTRS, 'charset', 'type', 'name',
170
+ 'href', 'hreflang', 'rel', 'rev', 'accesskey', 'shape',
171
+ 'coords', 'tabindex', 'onfocus', 'onblur']
172
+ TARGET_ATTR = ['target']
173
+ ROWS_COLS_ATTR = ['rows', 'cols']
174
+ ALT_ATTR = ['alt']
175
+ SRC_ALT_ATTRS = ['src', 'alt']
176
+ HREF_ATTRS = ['href']
177
+ CLEAR_ATTRS = ['clear']
178
+ INLINE_P = [INLINE, 'p']
179
+
180
+ FLOW_PARAM = [FLOW, 'param']
181
+ APPLET_ATTRS = [COREATTRS , 'codebase',
182
+ 'archive', 'alt', 'name', 'height', 'width', 'align',
183
+ 'hspace', 'vspace']
184
+ AREA_ATTRS = ['shape', 'coords', 'href', 'nohref',
185
+ 'tabindex', 'accesskey', 'onfocus', 'onblur']
186
+ BASEFONT_ATTRS = ['id', 'size', 'color', 'face']
187
+ QUOTE_ATTRS = [ATTRS, 'cite']
188
+ BODY_CONTENTS = [FLOW, 'ins', 'del']
189
+ BODY_ATTRS = [ATTRS, 'onload', 'onunload']
190
+ BODY_DEPR = ['background', 'bgcolor', 'text',
191
+ 'link', 'vlink', 'alink']
192
+ BUTTON_ATTRS = [ATTRS, 'name', 'value', 'type',
193
+ 'disabled', 'tabindex', 'accesskey', 'onfocus', 'onblur']
194
+
195
+
196
+ COL_ATTRS = [ATTRS, 'span', 'width', CELLHALIGN, CELLVALIGN]
197
+ COL_ELT = ['col']
198
+ EDIT_ATTRS = [ATTRS, 'datetime', 'cite']
199
+ COMPACT_ATTRS = [ATTRS, 'compact']
200
+ DL_CONTENTS = ['dt', 'dd']
201
+ COMPACT_ATTR = ['compact']
202
+ LABEL_ATTR = ['label']
203
+ FIELDSET_CONTENTS = [FLOW, 'legend' ]
204
+ FONT_ATTRS = [COREATTRS, I18N, 'size', 'color', 'face' ]
205
+ FORM_CONTENTS = [HEADING, LIST, INLINE, 'pre', 'p', 'div', 'center',
206
+ 'noscript', 'noframes', 'blockquote', 'isindex', 'hr',
207
+ 'table', 'fieldset', 'address']
208
+ FORM_ATTRS = [ATTRS, 'method', 'enctype', 'accept', 'name', 'onsubmit',
209
+ 'onreset', 'accept-charset']
210
+ FRAME_ATTRS = [COREATTRS, 'longdesc', 'name', 'src', 'frameborder',
211
+ 'marginwidth', 'marginheight', 'noresize', 'scrolling' ]
212
+ FRAMESET_ATTRS = [COREATTRS, 'rows', 'cols', 'onload', 'onunload']
213
+ FRAMESET_CONTENTS = ['frameset', 'frame', 'noframes']
214
+ HEAD_ATTRS = [I18N, 'profile']
215
+ HEAD_CONTENTS = ['title', 'isindex', 'base', 'script', 'style', 'meta',
216
+ 'link', 'object']
217
+ HR_DEPR = ['align', 'noshade', 'size', 'width']
218
+ VERSION_ATTR = ['version']
219
+ HTML_CONTENT = ['head', 'body', 'frameset']
220
+ IFRAME_ATTRS = [COREATTRS, 'longdesc', 'name', 'src', 'frameborder',
221
+ 'marginwidth', 'marginheight', 'scrolling', 'align',
222
+ 'height', 'width']
223
+ IMG_ATTRS = [ATTRS, 'longdesc', 'name', 'height', 'width', 'usemap',
224
+ 'ismap']
225
+ EMBED_ATTRS = [COREATTRS, 'align', 'alt', 'border', 'code', 'codebase',
226
+ 'frameborder', 'height', 'hidden', 'hspace', 'name',
227
+ 'palette', 'pluginspace', 'pluginurl', 'src', 'type',
228
+ 'units', 'vspace', 'width']
229
+ INPUT_ATTRS = [ATTRS, 'type', 'name', 'value', 'checked', 'disabled',
230
+ 'readonly', 'size', 'maxlength', 'src', 'alt', 'usemap',
231
+ 'ismap', 'tabindex', 'accesskey', 'onfocus', 'onblur',
232
+ 'onselect', 'onchange', 'accept']
233
+ PROMPT_ATTRS = [COREATTRS, I18N, 'prompt']
234
+ LABEL_ATTRS = [ATTRS, 'for', 'accesskey', 'onfocus', 'onblur']
235
+ LEGEND_ATTRS = [ATTRS, 'accesskey']
236
+ ALIGN_ATTR = ['align']
237
+ LINK_ATTRS = [ATTRS, 'charset', 'href', 'hreflang', 'type', 'rel', 'rev',
238
+ 'media']
239
+ MAP_CONTENTS = [BLOCK, 'area']
240
+ NAME_ATTR = ['name']
241
+ ACTION_ATTR = ['action']
242
+ BLOCKLI_ELT = [BLOCK, 'li']
243
+ META_ATTRS = [I18N, 'http-equiv', 'name', 'scheme']
244
+ CONTENT_ATTR = ['content']
245
+ TYPE_ATTR = ['type']
246
+ NOFRAMES_CONTENT = ['body', FLOW, MODIFIER]
247
+ OBJECT_CONTENTS = [FLOW, 'param']
248
+ OBJECT_ATTRS = [ATTRS, 'declare', 'classid', 'codebase', 'data', 'type',
249
+ 'codetype', 'archive', 'standby', 'height', 'width',
250
+ 'usemap', 'name', 'tabindex']
251
+ OBJECT_DEPR = ['align', 'border', 'hspace', 'vspace']
252
+ OL_ATTRS = ['type', 'compact', 'start']
253
+ OPTION_ELT = ['option']
254
+ OPTGROUP_ATTRS = [ATTRS, 'disabled']
255
+ OPTION_ATTRS = [ATTRS, 'disabled', 'label', 'selected', 'value']
256
+ PARAM_ATTRS = ['id', 'value', 'valuetype', 'type']
257
+ WIDTH_ATTR = ['width']
258
+ PRE_CONTENT = [PHRASE, 'tt', 'i', 'b', 'u', 's', 'strike', 'a', 'br',
259
+ 'script', 'map', 'q', 'span', 'bdo', 'iframe']
260
+ SCRIPT_ATTRS = ['charset', 'src', 'defer', 'event', 'for']
261
+ LANGUAGE_ATTR = ['language']
262
+ SELECT_CONTENT = ['optgroup', 'option']
263
+ SELECT_ATTRS = [ATTRS, 'name', 'size', 'multiple', 'disabled', 'tabindex',
264
+ 'onfocus', 'onblur', 'onchange']
265
+ STYLE_ATTRS = [I18N, 'media', 'title']
266
+ TABLE_ATTRS = [ATTRS, 'summary', 'width', 'border', 'frame', 'rules',
267
+ 'cellspacing', 'cellpadding', 'datapagesize']
268
+ TABLE_DEPR = ['align', 'bgcolor']
269
+ TABLE_CONTENTS = ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody',
270
+ 'tr']
271
+ TR_ELT = ['tr']
272
+ TALIGN_ATTRS = [ATTRS, CELLHALIGN, CELLVALIGN]
273
+ TH_TD_DEPR = ['nowrap', 'bgcolor', 'width', 'height']
274
+ TH_TD_ATTR = [ATTRS, 'abbr', 'axis', 'headers', 'scope', 'rowspan',
275
+ 'colspan', CELLHALIGN, CELLVALIGN]
276
+ TEXTAREA_ATTRS = [ATTRS, 'name', 'disabled', 'readonly', 'tabindex',
277
+ 'accesskey', 'onfocus', 'onblur', 'onselect',
278
+ 'onchange']
279
+ TR_CONTENTS = ['th', 'td']
280
+ BGCOLOR_ATTR = ['bgcolor']
281
+ LI_ELT = ['li']
282
+ UL_DEPR = ['type', 'compact']
283
+ DIR_ATTR = ['dir']
284
+
285
+ [
286
+ ['a', false, false, false, false, false, :any, true,
287
+ 'anchor ',
288
+ HTML_INLINE, nil, A_ATTRS, TARGET_ATTR, []
289
+ ],
290
+ ['abbr', false, false, false, false, false, :any, true,
291
+ 'abbreviated form',
292
+ HTML_INLINE, nil, HTML_ATTRS, [], []
293
+ ],
294
+ ['acronym', false, false, false, false, false, :any, true, '',
295
+ HTML_INLINE, nil, HTML_ATTRS, [], []
296
+ ],
297
+ ['address', false, false, false, false, false, :any, false,
298
+ 'information on author',
299
+ INLINE_P , nil, HTML_ATTRS, [], []
300
+ ],
301
+ ['applet', false, false, false, false, true, :loose, true,
302
+ 'java applet ',
303
+ FLOW_PARAM, nil, [], APPLET_ATTRS, []
304
+ ],
305
+ ['area', false, true, true, true, false, :any, false,
306
+ 'client-side image map area ',
307
+ EMPTY, nil, AREA_ATTRS, TARGET_ATTR, ALT_ATTR
308
+ ],
309
+ ['b', false, true, false, false, false, :any, true,
310
+ 'bold text style',
311
+ HTML_INLINE, nil, HTML_ATTRS, [], []
312
+ ],
313
+ ['base', false, true, true, true, false, :any, false,
314
+ 'document base uri ',
315
+ EMPTY, nil, [], TARGET_ATTR, HREF_ATTRS
316
+ ],
317
+ ['basefont', false, true, true, true, true, :loose, true,
318
+ 'base font size ',
319
+ EMPTY, nil, [], BASEFONT_ATTRS, []
320
+ ],
321
+ ['bdo', false, false, false, false, false, :any, true,
322
+ 'i18n bidi over-ride ',
323
+ HTML_INLINE, nil, CORE_I18N_ATTRS, [], DIR_ATTR
324
+ ],
325
+ ['big', false, true, false, false, false, :any, true,
326
+ 'large text style',
327
+ HTML_INLINE, nil, HTML_ATTRS, [], []
328
+ ],
329
+ ['blockquote', false, false, false, false, false, :any, false,
330
+ 'long quotation ',
331
+ HTML_FLOW, nil, QUOTE_ATTRS, [], []
332
+ ],
333
+ ['body', true, true, false, false, false, :any, false,
334
+ 'document body ',
335
+ BODY_CONTENTS, 'div', BODY_ATTRS, BODY_DEPR, []
336
+ ],
337
+ ['br', false, true, true, true, false, :any, true,
338
+ 'forced line break ',
339
+ EMPTY, nil, CORE_ATTRS, CLEAR_ATTRS, []
340
+ ],
341
+ ['button', false, false, false, false, false, :any, true,
342
+ 'push button ',
343
+ [HTML_FLOW, MODIFIER], nil, BUTTON_ATTRS, [], []
344
+ ],
345
+ ['caption', false, false, false, false, false, :any, false,
346
+ 'table caption ',
347
+ HTML_INLINE, nil, HTML_ATTRS, [], []
348
+ ],
349
+ ['center', false, true, false, false, true, :loose, false,
350
+ 'shorthand for div align=center ',
351
+ HTML_FLOW, nil, [], HTML_ATTRS, []
352
+ ],
353
+ ['cite', false, false, false, false, false, :any, true, 'citation',
354
+ HTML_INLINE, nil, HTML_ATTRS, [], []
355
+ ],
356
+ ['code', false, false, false, false, false, :any, true,
357
+ 'computer code fragment',
358
+ HTML_INLINE, nil, HTML_ATTRS, [], []
359
+ ],
360
+ ['col', false, true, true, true, false, :any, false, 'table column ',
361
+ EMPTY, nil, COL_ATTRS, [], []
362
+ ],
363
+ ['colgroup', false, true, false, false, false, :any, false,
364
+ 'table column group ',
365
+ COL_ELT, 'col', COL_ATTRS, [], []
366
+ ],
367
+ ['dd', false, true, false, false, false, :any, false,
368
+ 'definition description ',
369
+ HTML_FLOW, nil, HTML_ATTRS, [], []
370
+ ],
371
+ ['del', false, false, false, false, false, :any, true,
372
+ 'deleted text ',
373
+ HTML_FLOW, nil, EDIT_ATTRS, [], []
374
+ ],
375
+ ['dfn', false, false, false, false, false, :any, true,
376
+ 'instance definition',
377
+ HTML_INLINE, nil, HTML_ATTRS, [], []
378
+ ],
379
+ ['dir', false, false, false, false, true, :loose, false,
380
+ 'directory list',
381
+ BLOCKLI_ELT, 'li', [], COMPACT_ATTRS, []
382
+ ],
383
+ ['div', false, false, false, false, false, :any, false,
384
+ 'generic language/style container',
385
+ HTML_FLOW, nil, HTML_ATTRS, ALIGN_ATTR, []
386
+ ],
387
+ ['dl', false, false, false, false, false, :any, false,
388
+ 'definition list ',
389
+ DL_CONTENTS, 'dd', HTML_ATTRS, COMPACT_ATTR, []
390
+ ],
391
+ ['dt', false, true, false, false, false, :any, false,
392
+ 'definition term ',
393
+ HTML_INLINE, nil, HTML_ATTRS, [], []
394
+ ],
395
+ ['em', false, true, false, false, false, :any, true,
396
+ 'emphasis',
397
+ HTML_INLINE, nil, HTML_ATTRS, [], []
398
+ ],
399
+ ['embed', false, true, false, false, true, :loose, true,
400
+ 'generic embedded object ',
401
+ EMPTY, nil, EMBED_ATTRS, [], []
402
+ ],
403
+ ['fieldset', false, false, false, false, false, :any, false,
404
+ 'form control group ',
405
+ FIELDSET_CONTENTS, nil, HTML_ATTRS, [], []
406
+ ],
407
+ ['font', false, true, false, false, true, :loose, true,
408
+ 'local change to font ',
409
+ HTML_INLINE, nil, [], FONT_ATTRS, []
410
+ ],
411
+ ['form', false, false, false, false, false, :any, false,
412
+ 'interactive form ',
413
+ FORM_CONTENTS, 'fieldset', FORM_ATTRS, TARGET_ATTR, ACTION_ATTR
414
+ ],
415
+ ['frame', false, true, true, true, false, :frameset, false,
416
+ 'subwindow ',
417
+ EMPTY, nil, [], FRAME_ATTRS, []
418
+ ],
419
+ ['frameset', false, false, false, false, false, :frameset, false,
420
+ 'window subdivision',
421
+ FRAMESET_CONTENTS, 'noframes', [], FRAMESET_ATTRS, []
422
+ ],
423
+ ['htrue', false, false, false, false, false, :any, false,
424
+ 'heading ',
425
+ HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, []
426
+ ],
427
+ ['htrue', false, false, false, false, false, :any, false,
428
+ 'heading ',
429
+ HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, []
430
+ ],
431
+ ['htrue', false, false, false, false, false, :any, false,
432
+ 'heading ',
433
+ HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, []
434
+ ],
435
+ ['h4', false, false, false, false, false, :any, false,
436
+ 'heading ',
437
+ HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, []
438
+ ],
439
+ ['h5', false, false, false, false, false, :any, false,
440
+ 'heading ',
441
+ HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, []
442
+ ],
443
+ ['h6', false, false, false, false, false, :any, false,
444
+ 'heading ',
445
+ HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, []
446
+ ],
447
+ ['head', true, true, false, false, false, :any, false,
448
+ 'document head ',
449
+ HEAD_CONTENTS, nil, HEAD_ATTRS, [], []
450
+ ],
451
+ ['hr', false, true, true, true, false, :any, false,
452
+ 'horizontal rule ',
453
+ EMPTY, nil, HTML_ATTRS, HR_DEPR, []
454
+ ],
455
+ ['html', true, true, false, false, false, :any, false,
456
+ 'document root element ',
457
+ HTML_CONTENT, nil, I18N_ATTRS, VERSION_ATTR, []
458
+ ],
459
+ ['i', false, true, false, false, false, :any, true,
460
+ 'italic text style',
461
+ HTML_INLINE, nil, HTML_ATTRS, [], []
462
+ ],
463
+ ['iframe', false, false, false, false, false, :any, true,
464
+ 'inline subwindow ',
465
+ HTML_FLOW, nil, [], IFRAME_ATTRS, []
466
+ ],
467
+ ['img', false, true, true, true, false, :any, true,
468
+ 'embedded image ',
469
+ EMPTY, nil, IMG_ATTRS, ALIGN_ATTR, SRC_ALT_ATTRS
470
+ ],
471
+ ['input', false, true, true, true, false, :any, true,
472
+ 'form control ',
473
+ EMPTY, nil, INPUT_ATTRS, ALIGN_ATTR, []
474
+ ],
475
+ ['ins', false, false, false, false, false, :any, true,
476
+ 'inserted text',
477
+ HTML_FLOW, nil, EDIT_ATTRS, [], []
478
+ ],
479
+ ['isindex', false, true, true, true, true, :loose, false,
480
+ 'single line prompt ',
481
+ EMPTY, nil, [], PROMPT_ATTRS, []
482
+ ],
483
+ ['kbd', false, false, false, false, false, :any, true,
484
+ 'text to be entered by the user',
485
+ HTML_INLINE, nil, HTML_ATTRS, [], []
486
+ ],
487
+ ['label', false, false, false, false, false, :any, true,
488
+ 'form field label text ',
489
+ [HTML_INLINE, MODIFIER], nil, LABEL_ATTRS, [], []
490
+ ],
491
+ ['legend', false, false, false, false, false, :any, false,
492
+ 'fieldset legend ',
493
+ HTML_INLINE, nil, LEGEND_ATTRS, ALIGN_ATTR, []
494
+ ],
495
+ ['li', false, true, true, false, false, :any, false,
496
+ 'list item ',
497
+ HTML_FLOW, nil, HTML_ATTRS, [], []
498
+ ],
499
+ ['link', false, true, true, true, false, :any, false,
500
+ 'a media-independent link ',
501
+ EMPTY, nil, LINK_ATTRS, TARGET_ATTR, []
502
+ ],
503
+ ['map', false, false, false, false, false, :any, true,
504
+ 'client-side image map ',
505
+ MAP_CONTENTS, nil, HTML_ATTRS, [], NAME_ATTR
506
+ ],
507
+ ['menu', false, false, false, false, true, :loose, false,
508
+ 'menu list ',
509
+ BLOCKLI_ELT, nil, [], COMPACT_ATTRS, []
510
+ ],
511
+ ['meta', false, true, true, true, false, :any, false,
512
+ 'generic metainformation ',
513
+ EMPTY, nil, META_ATTRS, [], CONTENT_ATTR
514
+ ],
515
+ ['noframes', false, false, false, false, false, :frameset, false,
516
+ 'alternate content container for non frame-based rendering ',
517
+ NOFRAMES_CONTENT, 'body', HTML_ATTRS, [], []
518
+ ],
519
+ ['noscript', false, false, false, false, false, :any, false,
520
+ 'alternate content container for non script-based rendering ',
521
+ HTML_FLOW, 'div', HTML_ATTRS, [], []
522
+ ],
523
+ ['object', false, false, false, false, false, :any, true,
524
+ 'generic embedded object ',
525
+ OBJECT_CONTENTS, 'div', OBJECT_ATTRS, OBJECT_DEPR, []
526
+ ],
527
+ ['ol', false, false, false, false, false, :any, false,
528
+ 'ordered list ',
529
+ LI_ELT, 'li', HTML_ATTRS, OL_ATTRS, []
530
+ ],
531
+ ['optgroup', false, false, false, false, false, :any, false,
532
+ 'option group ',
533
+ OPTION_ELT, 'option', OPTGROUP_ATTRS, [], LABEL_ATTR
534
+ ],
535
+ ['option', false, true, false, false, false, :any, false,
536
+ 'selectable choice ',
537
+ HTML_PCDATA, nil, OPTION_ATTRS, [], []
538
+ ],
539
+ ['p', false, true, false, false, false, :any, false,
540
+ 'paragraph ',
541
+ HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, []
542
+ ],
543
+ ['param', false, true, true, true, false, :any, false,
544
+ 'named property value ',
545
+ EMPTY, nil, PARAM_ATTRS, [], NAME_ATTR
546
+ ],
547
+ ['pre', false, false, false, false, false, :any, false,
548
+ 'preformatted text ',
549
+ PRE_CONTENT, nil, HTML_ATTRS, WIDTH_ATTR, []
550
+ ],
551
+ ['q', false, false, false, false, false, :any, true,
552
+ 'short inline quotation ',
553
+ HTML_INLINE, nil, QUOTE_ATTRS, [], []
554
+ ],
555
+ ['s', false, true, false, false, true, :loose, true,
556
+ 'strike-through text style',
557
+ HTML_INLINE, nil, [], HTML_ATTRS, []
558
+ ],
559
+ ['samp', false, false, false, false, false, :any, true,
560
+ 'sample program output, scripts, etc.',
561
+ HTML_INLINE, nil, HTML_ATTRS, [], []
562
+ ],
563
+ ['script', false, false, false, false, false, :any, true,
564
+ 'script statements ',
565
+ HTML_CDATA, nil, SCRIPT_ATTRS, LANGUAGE_ATTR, TYPE_ATTR
566
+ ],
567
+ ['select', false, false, false, false, false, :any, true,
568
+ 'option selector ',
569
+ SELECT_CONTENT, nil, SELECT_ATTRS, [], []
570
+ ],
571
+ ['small', false, true, false, false, false, :any, true,
572
+ 'small text style',
573
+ HTML_INLINE, nil, HTML_ATTRS, [], []
574
+ ],
575
+ ['span', false, false, false, false, false, :any, true,
576
+ 'generic language/style container ',
577
+ HTML_INLINE, nil, HTML_ATTRS, [], []
578
+ ],
579
+ ['strike', false, true, false, false, true, :loose, true,
580
+ 'strike-through text',
581
+ HTML_INLINE, nil, [], HTML_ATTRS, []
582
+ ],
583
+ ['strong', false, true, false, false, false, :any, true,
584
+ 'strong emphasis',
585
+ HTML_INLINE, nil, HTML_ATTRS, [], []
586
+ ],
587
+ ['style', false, false, false, false, false, :any, false,
588
+ 'style info ',
589
+ HTML_CDATA, nil, STYLE_ATTRS, [], TYPE_ATTR
590
+ ],
591
+ ['sub', false, true, false, false, false, :any, true,
592
+ 'subscript',
593
+ HTML_INLINE, nil, HTML_ATTRS, [], []
594
+ ],
595
+ ['sup', false, true, false, false, false, :any, true,
596
+ 'superscript ',
597
+ HTML_INLINE, nil, HTML_ATTRS, [], []
598
+ ],
599
+ ['table', false, false, false, false, false, :any, false,
600
+ '',
601
+ TABLE_CONTENTS, 'tr', TABLE_ATTRS, TABLE_DEPR, []
602
+ ],
603
+ ['tbody', true, false, false, false, false, :any, false,
604
+ 'table body ',
605
+ TR_ELT, 'tr', TALIGN_ATTRS, [], []
606
+ ],
607
+ ['td', false, false, false, false, false, :any, false,
608
+ 'table data cell',
609
+ HTML_FLOW, nil, TH_TD_ATTR, TH_TD_DEPR, []
610
+ ],
611
+ ['textarea', false, false, false, false, false, :any, true,
612
+ 'multi-line text field ',
613
+ HTML_PCDATA, nil, TEXTAREA_ATTRS, [], ROWS_COLS_ATTR
614
+ ],
615
+ ['tfoot', false, true, false, false, false, :any, false,
616
+ 'table footer ',
617
+ TR_ELT, 'tr', TALIGN_ATTRS, [], []
618
+ ],
619
+ ['th', false, true, false, false, false, :any, false,
620
+ 'table header cell',
621
+ HTML_FLOW, nil, TH_TD_ATTR, TH_TD_DEPR, []
622
+ ],
623
+ ['thead', false, true, false, false, false, :any, false,
624
+ 'table header ',
625
+ TR_ELT, 'tr', TALIGN_ATTRS, [], []
626
+ ],
627
+ ['title', false, false, false, false, false, :any, false,
628
+ 'document title ',
629
+ HTML_PCDATA, nil, I18N_ATTRS, [], []
630
+ ],
631
+ ['tr', false, false, false, false, false, :any, false,
632
+ 'table row ',
633
+ TR_CONTENTS, 'td', TALIGN_ATTRS, BGCOLOR_ATTR, []
634
+ ],
635
+ ['tt', false, true, false, false, false, :any, true,
636
+ 'teletype or monospaced text style',
637
+ HTML_INLINE, nil, HTML_ATTRS, [], []
638
+ ],
639
+ ['u', false, true, false, false, true, :loose, true,
640
+ 'underlined text style',
641
+ HTML_INLINE, nil, [], HTML_ATTRS, []
642
+ ],
643
+ ['ul', false, false, false, false, false, :any, false,
644
+ 'unordered list ',
645
+ LI_ELT, 'li', HTML_ATTRS, UL_DEPR, []
646
+ ],
647
+ ['var', false, false, false, false, false, :any, true,
648
+ 'instance of a variable or program argument',
649
+ HTML_INLINE, nil, HTML_ATTRS, [], []
650
+ ]
651
+ ].each do |descriptor|
652
+ name = descriptor[0]
653
+
654
+ begin
655
+ d = Desc.new(*descriptor)
656
+
657
+ # flatten all the attribute lists (Ruby1.9, *[a,b,c] can be
658
+ # used to flatten a literal list, but not in Ruby1.8).
659
+ d[:subelts] = d[:subelts].flatten
660
+ d[:attrs_opt] = d[:attrs_opt].flatten
661
+ d[:attrs_depr] = d[:attrs_depr].flatten
662
+ d[:attrs_req] = d[:attrs_req].flatten
663
+ rescue => e
664
+ p name
665
+ raise e
666
+ end
667
+
668
+ DefaultDescriptions[name] = d
669
+ end
670
+ end
671
+ end
672
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ module Nokogiri
3
+ module HTML
4
+ class EntityDescription < Struct.new(:value, :name, :description); end
5
+
6
+ class EntityLookup
7
+ ###
8
+ # Look up entity with +name+
9
+ def [] name
10
+ (val = get(name)) && val.value
11
+ end
12
+ end
13
+ end
14
+ end