# frozen_string_literal: true
module Nokogiri
module HTML4
class ElementDescription
# Methods are defined protected by method_defined? because at
# this point the C-library or Java library is already loaded,
# and we don't want to clobber any methods that have been
# defined there.
Desc = Struct.new("HTMLElementDescription", :name,
:startTag, :endTag, :saveEndTag,
:empty, :depr, :dtd, :isinline,
:desc,
:subelts, :defaultsubelt,
:attrs_opt, :attrs_depr, :attrs_req)
# This is filled in down below.
DefaultDescriptions = {} # rubocop:disable Naming/ConstantName
def default_desc
DefaultDescriptions[name.downcase]
end
private :default_desc
unless method_defined?(:implied_start_tag?)
def implied_start_tag?
default_desc&.startTag
end
end
unless method_defined?(:implied_end_tag?)
def implied_end_tag?
default_desc&.endTag
end
end
unless method_defined?(:save_end_tag?)
def save_end_tag?
default_desc&.saveEndTag
end
end
unless method_defined?(:deprecated?)
def deprecated?
default_desc&.depr
end
end
unless method_defined?(:description)
def description
default_desc&.desc
end
end
unless method_defined?(:default_sub_element)
def default_sub_element
default_desc&.defaultsubelt
end
end
unless method_defined?(:optional_attributes)
def optional_attributes
d = default_desc
d ? d.attrs_opt : []
end
end
unless method_defined?(:deprecated_attributes)
def deprecated_attributes
d = default_desc
d ? d.attrs_depr : []
end
end
unless method_defined?(:required_attributes)
def required_attributes
d = default_desc
d ? d.attrs_req : []
end
end
###
# Default Element Descriptions (HTML 4.0) copied from
# libxml2/HTMLparser.c and libxml2/include/libxml/HTMLparser.h
#
# The copyright notice for those files and the following list of
# element and attribute descriptions is reproduced here:
#
# Except where otherwise noted in the source code (e.g. the
# files hash.c, list.c and the trio files, which are covered by
# a similar licence but with different Copyright notices) all
# the files are:
#
# Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the
# Software is fur- nished to do so, subject to the following
# conditions:
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the
# Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# WARRANTIES OF MERCHANTABILITY, FIT- NESS FOR A PARTICULAR
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE DANIEL
# VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CON- NECTION WITH THE SOFTWARE OR THE USE
# OR OTHER DEALINGS IN THE SOFTWARE.
# Except as contained in this notice, the name of Daniel
# Veillard shall not be used in advertising or otherwise to
# promote the sale, use or other deal- ings in this Software
# without prior written authorization from him.
# Attributes defined and categorized
FONTSTYLE = ["tt", "i", "b", "u", "s", "strike", "big", "small"]
PHRASE = ["em", "strong", "dfn", "code", "samp",
"kbd", "var", "cite", "abbr", "acronym",]
SPECIAL = ["a", "img", "applet", "embed", "object", "font", "basefont",
"br", "script", "map", "q", "sub", "sup", "span", "bdo",
"iframe",]
PCDATA = []
HEADING = ["h1", "h2", "h3", "h4", "h5", "h6"]
LIST = ["ul", "ol", "dir", "menu"]
FORMCTRL = ["input", "select", "textarea", "label", "button"]
BLOCK = [HEADING, LIST, "pre", "p", "dl", "div", "center", "noscript",
"noframes", "blockquote", "form", "isindex", "hr", "table",
"fieldset", "address",]
INLINE = [PCDATA, FONTSTYLE, PHRASE, SPECIAL, FORMCTRL]
FLOW = [BLOCK, INLINE]
MODIFIER = []
EMPTY = []
HTML_FLOW = FLOW
HTML_INLINE = INLINE
HTML_PCDATA = PCDATA
HTML_CDATA = HTML_PCDATA
COREATTRS = ["id", "class", "style", "title"]
I18N = ["lang", "dir"]
EVENTS = ["onclick", "ondblclick", "onmousedown", "onmouseup",
"onmouseover", "onmouseout", "onkeypress", "onkeydown",
"onkeyup",]
ATTRS = [COREATTRS, I18N, EVENTS]
CELLHALIGN = ["align", "char", "charoff"]
CELLVALIGN = ["valign"]
HTML_ATTRS = ATTRS
CORE_I18N_ATTRS = [COREATTRS, I18N]
CORE_ATTRS = COREATTRS
I18N_ATTRS = I18N
A_ATTRS = [ATTRS, "charset", "type", "name",
"href", "hreflang", "rel", "rev", "accesskey", "shape",
"coords", "tabindex", "onfocus", "onblur",]
TARGET_ATTR = ["target"]
ROWS_COLS_ATTR = ["rows", "cols"]
ALT_ATTR = ["alt"]
SRC_ALT_ATTRS = ["src", "alt"]
HREF_ATTRS = ["href"]
CLEAR_ATTRS = ["clear"]
INLINE_P = [INLINE, "p"]
FLOW_PARAM = [FLOW, "param"]
APPLET_ATTRS = [COREATTRS, "codebase",
"archive", "alt", "name", "height", "width", "align",
"hspace", "vspace",]
AREA_ATTRS = ["shape", "coords", "href", "nohref",
"tabindex", "accesskey", "onfocus", "onblur",]
BASEFONT_ATTRS = ["id", "size", "color", "face"]
QUOTE_ATTRS = [ATTRS, "cite"]
BODY_CONTENTS = [FLOW, "ins", "del"]
BODY_ATTRS = [ATTRS, "onload", "onunload"]
BODY_DEPR = ["background", "bgcolor", "text",
"link", "vlink", "alink",]
BUTTON_ATTRS = [ATTRS, "name", "value", "type",
"disabled", "tabindex", "accesskey", "onfocus", "onblur",]
COL_ATTRS = [ATTRS, "span", "width", CELLHALIGN, CELLVALIGN]
COL_ELT = ["col"]
EDIT_ATTRS = [ATTRS, "datetime", "cite"]
COMPACT_ATTRS = [ATTRS, "compact"]
DL_CONTENTS = ["dt", "dd"]
COMPACT_ATTR = ["compact"]
LABEL_ATTR = ["label"]
FIELDSET_CONTENTS = [FLOW, "legend"]
FONT_ATTRS = [COREATTRS, I18N, "size", "color", "face"]
FORM_CONTENTS = [HEADING, LIST, INLINE, "pre", "p", "div", "center",
"noscript", "noframes", "blockquote", "isindex", "hr",
"table", "fieldset", "address",]
FORM_ATTRS = [ATTRS, "method", "enctype", "accept", "name", "onsubmit",
"onreset", "accept-charset",]
FRAME_ATTRS = [COREATTRS, "longdesc", "name", "src", "frameborder",
"marginwidth", "marginheight", "noresize", "scrolling",]
FRAMESET_ATTRS = [COREATTRS, "rows", "cols", "onload", "onunload"]
FRAMESET_CONTENTS = ["frameset", "frame", "noframes"]
HEAD_ATTRS = [I18N, "profile"]
HEAD_CONTENTS = ["title", "isindex", "base", "script", "style", "meta",
"link", "object",]
HR_DEPR = ["align", "noshade", "size", "width"]
VERSION_ATTR = ["version"]
HTML_CONTENT = ["head", "body", "frameset"]
IFRAME_ATTRS = [COREATTRS, "longdesc", "name", "src", "frameborder",
"marginwidth", "marginheight", "scrolling", "align",
"height", "width",]
IMG_ATTRS = [ATTRS, "longdesc", "name", "height", "width", "usemap",
"ismap",]
EMBED_ATTRS = [COREATTRS, "align", "alt", "border", "code", "codebase",
"frameborder", "height", "hidden", "hspace", "name",
"palette", "pluginspace", "pluginurl", "src", "type",
"units", "vspace", "width",]
INPUT_ATTRS = [ATTRS, "type", "name", "value", "checked", "disabled",
"readonly", "size", "maxlength", "src", "alt", "usemap",
"ismap", "tabindex", "accesskey", "onfocus", "onblur",
"onselect", "onchange", "accept",]
PROMPT_ATTRS = [COREATTRS, I18N, "prompt"]
LABEL_ATTRS = [ATTRS, "for", "accesskey", "onfocus", "onblur"]
LEGEND_ATTRS = [ATTRS, "accesskey"]
ALIGN_ATTR = ["align"]
LINK_ATTRS = [ATTRS, "charset", "href", "hreflang", "type", "rel", "rev",
"media",]
MAP_CONTENTS = [BLOCK, "area"]
NAME_ATTR = ["name"]
ACTION_ATTR = ["action"]
BLOCKLI_ELT = [BLOCK, "li"]
META_ATTRS = [I18N, "http-equiv", "name", "scheme"]
CONTENT_ATTR = ["content"]
TYPE_ATTR = ["type"]
NOFRAMES_CONTENT = ["body", FLOW, MODIFIER]
OBJECT_CONTENTS = [FLOW, "param"]
OBJECT_ATTRS = [ATTRS, "declare", "classid", "codebase", "data", "type",
"codetype", "archive", "standby", "height", "width",
"usemap", "name", "tabindex",]
OBJECT_DEPR = ["align", "border", "hspace", "vspace"]
OL_ATTRS = ["type", "compact", "start"]
OPTION_ELT = ["option"]
OPTGROUP_ATTRS = [ATTRS, "disabled"]
OPTION_ATTRS = [ATTRS, "disabled", "label", "selected", "value"]
PARAM_ATTRS = ["id", "value", "valuetype", "type"]
WIDTH_ATTR = ["width"]
PRE_CONTENT = [PHRASE, "tt", "i", "b", "u", "s", "strike", "a", "br",
"script", "map", "q", "span", "bdo", "iframe",]
SCRIPT_ATTRS = ["charset", "src", "defer", "event", "for"]
LANGUAGE_ATTR = ["language"]
SELECT_CONTENT = ["optgroup", "option"]
SELECT_ATTRS = [ATTRS, "name", "size", "multiple", "disabled", "tabindex",
"onfocus", "onblur", "onchange",]
STYLE_ATTRS = [I18N, "media", "title"]
TABLE_ATTRS = [ATTRS, "summary", "width", "border", "frame", "rules",
"cellspacing", "cellpadding", "datapagesize",]
TABLE_DEPR = ["align", "bgcolor"]
TABLE_CONTENTS = ["caption", "col", "colgroup", "thead", "tfoot", "tbody",
"tr",]
TR_ELT = ["tr"]
TALIGN_ATTRS = [ATTRS, CELLHALIGN, CELLVALIGN]
TH_TD_DEPR = ["nowrap", "bgcolor", "width", "height"]
TH_TD_ATTR = [ATTRS, "abbr", "axis", "headers", "scope", "rowspan",
"colspan", CELLHALIGN, CELLVALIGN,]
TEXTAREA_ATTRS = [ATTRS, "name", "disabled", "readonly", "tabindex",
"accesskey", "onfocus", "onblur", "onselect",
"onchange",]
TR_CONTENTS = ["th", "td"]
BGCOLOR_ATTR = ["bgcolor"]
LI_ELT = ["li"]
UL_DEPR = ["type", "compact"]
DIR_ATTR = ["dir"]
[
["a", false, false, false, false, false, :any, true,
"anchor ",
HTML_INLINE, nil, A_ATTRS, TARGET_ATTR, [],],
["abbr", false, false, false, false, false, :any, true,
"abbreviated form",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["acronym", false, false, false, false, false, :any, true, "",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["address", false, false, false, false, false, :any, false,
"information on author",
INLINE_P, nil, HTML_ATTRS, [], [],],
["applet", false, false, false, false, true, :loose, true,
"java applet ",
FLOW_PARAM, nil, [], APPLET_ATTRS, [],],
["area", false, true, true, true, false, :any, false,
"client-side image map area ",
EMPTY, nil, AREA_ATTRS, TARGET_ATTR, ALT_ATTR,],
["b", false, true, false, false, false, :any, true,
"bold text style",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["base", false, true, true, true, false, :any, false,
"document base uri ",
EMPTY, nil, [], TARGET_ATTR, HREF_ATTRS,],
["basefont", false, true, true, true, true, :loose, true,
"base font size ",
EMPTY, nil, [], BASEFONT_ATTRS, [],],
["bdo", false, false, false, false, false, :any, true,
"i18n bidi over-ride ",
HTML_INLINE, nil, CORE_I18N_ATTRS, [], DIR_ATTR,],
["big", false, true, false, false, false, :any, true,
"large text style",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["blockquote", false, false, false, false, false, :any, false,
"long quotation ",
HTML_FLOW, nil, QUOTE_ATTRS, [], [],],
["body", true, true, false, false, false, :any, false,
"document body ",
BODY_CONTENTS, "div", BODY_ATTRS, BODY_DEPR, [],],
["br", false, true, true, true, false, :any, true,
"forced line break ",
EMPTY, nil, CORE_ATTRS, CLEAR_ATTRS, [],],
["button", false, false, false, false, false, :any, true,
"push button ",
[HTML_FLOW, MODIFIER], nil, BUTTON_ATTRS, [], [],],
["caption", false, false, false, false, false, :any, false,
"table caption ",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["center", false, true, false, false, true, :loose, false,
"shorthand for div align=center ",
HTML_FLOW, nil, [], HTML_ATTRS, [],],
["cite", false, false, false, false, false, :any, true, "citation",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["code", false, false, false, false, false, :any, true,
"computer code fragment",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["col", false, true, true, true, false, :any, false, "table column ",
EMPTY, nil, COL_ATTRS, [], [],],
["colgroup", false, true, false, false, false, :any, false,
"table column group ",
COL_ELT, "col", COL_ATTRS, [], [],],
["dd", false, true, false, false, false, :any, false,
"definition description ",
HTML_FLOW, nil, HTML_ATTRS, [], [],],
["del", false, false, false, false, false, :any, true,
"deleted text ",
HTML_FLOW, nil, EDIT_ATTRS, [], [],],
["dfn", false, false, false, false, false, :any, true,
"instance definition",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["dir", false, false, false, false, true, :loose, false,
"directory list",
BLOCKLI_ELT, "li", [], COMPACT_ATTRS, [],],
["div", false, false, false, false, false, :any, false,
"generic language/style container",
HTML_FLOW, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["dl", false, false, false, false, false, :any, false,
"definition list ",
DL_CONTENTS, "dd", HTML_ATTRS, COMPACT_ATTR, [],],
["dt", false, true, false, false, false, :any, false,
"definition term ",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["em", false, true, false, false, false, :any, true,
"emphasis",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["embed", false, true, false, false, true, :loose, true,
"generic embedded object ",
EMPTY, nil, EMBED_ATTRS, [], [],],
["fieldset", false, false, false, false, false, :any, false,
"form control group ",
FIELDSET_CONTENTS, nil, HTML_ATTRS, [], [],],
["font", false, true, false, false, true, :loose, true,
"local change to font ",
HTML_INLINE, nil, [], FONT_ATTRS, [],],
["form", false, false, false, false, false, :any, false,
"interactive form ",
FORM_CONTENTS, "fieldset", FORM_ATTRS, TARGET_ATTR, ACTION_ATTR,],
["frame", false, true, true, true, false, :frameset, false,
"subwindow ",
EMPTY, nil, [], FRAME_ATTRS, [],],
["frameset", false, false, false, false, false, :frameset, false,
"window subdivision",
FRAMESET_CONTENTS, "noframes", [], FRAMESET_ATTRS, [],],
["htrue", false, false, false, false, false, :any, false,
"heading ",
HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["htrue", false, false, false, false, false, :any, false,
"heading ",
HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["htrue", false, false, false, false, false, :any, false,
"heading ",
HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["h4", false, false, false, false, false, :any, false,
"heading ",
HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["h5", false, false, false, false, false, :any, false,
"heading ",
HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["h6", false, false, false, false, false, :any, false,
"heading ",
HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["head", true, true, false, false, false, :any, false,
"document head ",
HEAD_CONTENTS, nil, HEAD_ATTRS, [], [],],
["hr", false, true, true, true, false, :any, false,
"horizontal rule ",
EMPTY, nil, HTML_ATTRS, HR_DEPR, [],],
["html", true, true, false, false, false, :any, false,
"document root element ",
HTML_CONTENT, nil, I18N_ATTRS, VERSION_ATTR, [],],
["i", false, true, false, false, false, :any, true,
"italic text style",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["iframe", false, false, false, false, false, :any, true,
"inline subwindow ",
HTML_FLOW, nil, [], IFRAME_ATTRS, [],],
["img", false, true, true, true, false, :any, true,
"embedded image ",
EMPTY, nil, IMG_ATTRS, ALIGN_ATTR, SRC_ALT_ATTRS,],
["input", false, true, true, true, false, :any, true,
"form control ",
EMPTY, nil, INPUT_ATTRS, ALIGN_ATTR, [],],
["ins", false, false, false, false, false, :any, true,
"inserted text",
HTML_FLOW, nil, EDIT_ATTRS, [], [],],
["isindex", false, true, true, true, true, :loose, false,
"single line prompt ",
EMPTY, nil, [], PROMPT_ATTRS, [],],
["kbd", false, false, false, false, false, :any, true,
"text to be entered by the user",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["label", false, false, false, false, false, :any, true,
"form field label text ",
[HTML_INLINE, MODIFIER], nil, LABEL_ATTRS, [], [],],
["legend", false, false, false, false, false, :any, false,
"fieldset legend ",
HTML_INLINE, nil, LEGEND_ATTRS, ALIGN_ATTR, [],],
["li", false, true, true, false, false, :any, false,
"list item ",
HTML_FLOW, nil, HTML_ATTRS, [], [],],
["link", false, true, true, true, false, :any, false,
"a media-independent link ",
EMPTY, nil, LINK_ATTRS, TARGET_ATTR, [],],
["map", false, false, false, false, false, :any, true,
"client-side image map ",
MAP_CONTENTS, nil, HTML_ATTRS, [], NAME_ATTR,],
["menu", false, false, false, false, true, :loose, false,
"menu list ",
BLOCKLI_ELT, nil, [], COMPACT_ATTRS, [],],
["meta", false, true, true, true, false, :any, false,
"generic metainformation ",
EMPTY, nil, META_ATTRS, [], CONTENT_ATTR,],
["noframes", false, false, false, false, false, :frameset, false,
"alternate content container for non frame-based rendering ",
NOFRAMES_CONTENT, "body", HTML_ATTRS, [], [],],
["noscript", false, false, false, false, false, :any, false,
"alternate content container for non script-based rendering ",
HTML_FLOW, "div", HTML_ATTRS, [], [],],
["object", false, false, false, false, false, :any, true,
"generic embedded object ",
OBJECT_CONTENTS, "div", OBJECT_ATTRS, OBJECT_DEPR, [],],
["ol", false, false, false, false, false, :any, false,
"ordered list ",
LI_ELT, "li", HTML_ATTRS, OL_ATTRS, [],],
["optgroup", false, false, false, false, false, :any, false,
"option group ",
OPTION_ELT, "option", OPTGROUP_ATTRS, [], LABEL_ATTR,],
["option", false, true, false, false, false, :any, false,
"selectable choice ",
HTML_PCDATA, nil, OPTION_ATTRS, [], [],],
["p", false, true, false, false, false, :any, false,
"paragraph ",
HTML_INLINE, nil, HTML_ATTRS, ALIGN_ATTR, [],],
["param", false, true, true, true, false, :any, false,
"named property value ",
EMPTY, nil, PARAM_ATTRS, [], NAME_ATTR,],
["pre", false, false, false, false, false, :any, false,
"preformatted text ",
PRE_CONTENT, nil, HTML_ATTRS, WIDTH_ATTR, [],],
["q", false, false, false, false, false, :any, true,
"short inline quotation ",
HTML_INLINE, nil, QUOTE_ATTRS, [], [],],
["s", false, true, false, false, true, :loose, true,
"strike-through text style",
HTML_INLINE, nil, [], HTML_ATTRS, [],],
["samp", false, false, false, false, false, :any, true,
"sample program output, scripts, etc.",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["script", false, false, false, false, false, :any, true,
"script statements ",
HTML_CDATA, nil, SCRIPT_ATTRS, LANGUAGE_ATTR, TYPE_ATTR,],
["select", false, false, false, false, false, :any, true,
"option selector ",
SELECT_CONTENT, nil, SELECT_ATTRS, [], [],],
["small", false, true, false, false, false, :any, true,
"small text style",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["span", false, false, false, false, false, :any, true,
"generic language/style container ",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["strike", false, true, false, false, true, :loose, true,
"strike-through text",
HTML_INLINE, nil, [], HTML_ATTRS, [],],
["strong", false, true, false, false, false, :any, true,
"strong emphasis",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["style", false, false, false, false, false, :any, false,
"style info ",
HTML_CDATA, nil, STYLE_ATTRS, [], TYPE_ATTR,],
["sub", false, true, false, false, false, :any, true,
"subscript",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["sup", false, true, false, false, false, :any, true,
"superscript ",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["table", false, false, false, false, false, :any, false,
"",
TABLE_CONTENTS, "tr", TABLE_ATTRS, TABLE_DEPR, [],],
["tbody", true, false, false, false, false, :any, false,
"table body ",
TR_ELT, "tr", TALIGN_ATTRS, [], [],],
["td", false, false, false, false, false, :any, false,
"table data cell",
HTML_FLOW, nil, TH_TD_ATTR, TH_TD_DEPR, [],],
["textarea", false, false, false, false, false, :any, true,
"multi-line text field ",
HTML_PCDATA, nil, TEXTAREA_ATTRS, [], ROWS_COLS_ATTR,],
["tfoot", false, true, false, false, false, :any, false,
"table footer ",
TR_ELT, "tr", TALIGN_ATTRS, [], [],],
["th", false, true, false, false, false, :any, false,
"table header cell",
HTML_FLOW, nil, TH_TD_ATTR, TH_TD_DEPR, [],],
["thead", false, true, false, false, false, :any, false,
"table header ",
TR_ELT, "tr", TALIGN_ATTRS, [], [],],
["title", false, false, false, false, false, :any, false,
"document title ",
HTML_PCDATA, nil, I18N_ATTRS, [], [],],
["tr", false, false, false, false, false, :any, false,
"table row ",
TR_CONTENTS, "td", TALIGN_ATTRS, BGCOLOR_ATTR, [],],
["tt", false, true, false, false, false, :any, true,
"teletype or monospaced text style",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
["u", false, true, false, false, true, :loose, true,
"underlined text style",
HTML_INLINE, nil, [], HTML_ATTRS, [],],
["ul", false, false, false, false, false, :any, false,
"unordered list ",
LI_ELT, "li", HTML_ATTRS, UL_DEPR, [],],
["var", false, false, false, false, false, :any, true,
"instance of a variable or program argument",
HTML_INLINE, nil, HTML_ATTRS, [], [],],
].each do |descriptor|
name = descriptor[0]
begin
d = Desc.new(*descriptor)
# flatten all the attribute lists (Ruby1.9, *[a,b,c] can be
# used to flatten a literal list, but not in Ruby1.8).
d[:subelts] = d[:subelts].flatten
d[:attrs_opt] = d[:attrs_opt].flatten
d[:attrs_depr] = d[:attrs_depr].flatten
d[:attrs_req] = d[:attrs_req].flatten
rescue => e
p(name)
raise e
end
DefaultDescriptions[name] = d
end
end
end
end