summaryrefslogtreecommitdiff
path: root/src/html.cc
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2016-06-21 18:03:59 -0400
committerJorge Arellano Cid <jcid@dillo.org>2016-06-21 18:03:59 -0400
commit482c55ff10490d2ff26dba537a85359b9913e8a2 (patch)
treeca187c37b88dd209bff0c7e3a127f26ee288ef2e /src/html.cc
parent0d76e0a98b46bd731e98811b53422941fb90e4a4 (diff)
Remove TagLevel from the TagInfo structure.
No longer necessary after the redesign of the parser's cleanup process for tag nesting.
Diffstat (limited to 'src/html.cc')
-rw-r--r--src/html.cc197
1 files changed, 92 insertions, 105 deletions
diff --git a/src/html.cc b/src/html.cc
index 3f7861d7..7cf89758 100644
--- a/src/html.cc
+++ b/src/html.cc
@@ -114,7 +114,6 @@ typedef struct {
const char *name; /* element name */
unsigned char Flags; /* flags (explained near the table data) */
char EndTag; /* Is it Required, Optional or Forbidden */
- uchar_t TagLevel; /* Used to heuristically parse bad HTML */
TagOpenFunct open; /* Open function */
TagOpenFunct content; /* Content function */
TagCloseFunct close; /* Close function */
@@ -3439,128 +3438,116 @@ static void Html_tag_content_wbr(DilloHtml *html, const char *tag, int tagsize)
*/
static const TagInfo Tags[] = {
- {"a", B8(01011),'R',2, Html_tag_open_a, NULL, Html_tag_close_a},
- {"abbr", B8(01011),'R',2, Html_tag_open_abbr, NULL, NULL},
+ {"a", B8(01011),'R', Html_tag_open_a, NULL, Html_tag_close_a},
+ {"abbr", B8(01011),'R', Html_tag_open_abbr, NULL, NULL},
/* acronym 010101 -- obsolete in HTML5 */
- {"address", B8(01110),'R',2,Html_tag_open_default, NULL, Html_tag_close_par},
- {"area", B8(01001),'F',0, Html_tag_open_default, Html_tag_content_area,
- NULL},
- {"article", B8(01110),'R',2, Html_tag_open_sectioning, NULL, NULL},
- {"aside", B8(01110),'R',2, Html_tag_open_sectioning, NULL, NULL},
- {"audio", B8(01111),'R',2, Html_tag_open_audio, NULL, Html_tag_close_media},
- {"b", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"base", B8(10001),'F',0, Html_tag_open_base, NULL, NULL},
+ {"address", B8(01110),'R', Html_tag_open_default, NULL, Html_tag_close_par},
+ {"area", B8(01001),'F', Html_tag_open_default, Html_tag_content_area, NULL},
+ {"article", B8(01110),'R', Html_tag_open_sectioning, NULL, NULL},
+ {"aside", B8(01110),'R', Html_tag_open_sectioning, NULL, NULL},
+ {"audio", B8(01111),'R', Html_tag_open_audio, NULL, Html_tag_close_media},
+ {"b", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"base", B8(10001),'F', Html_tag_open_base, NULL, NULL},
/* basefont 010001 -- obsolete in HTML5 */
/* bdo 010101 */
- {"big", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"blockquote", B8(01110),'R',2, Html_tag_open_blockquote, NULL,
- NULL},
- {"body", B8(01110),'O',1, Html_tag_open_body, NULL, Html_tag_close_body},
- {"br", B8(01001),'F',0, Html_tag_open_default, Html_tag_content_br,
- NULL},
- {"button", B8(01111),'R',2, Html_tag_open_button,NULL,Html_tag_close_button},
+ {"big", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"blockquote", B8(01110),'R', Html_tag_open_blockquote, NULL, NULL},
+ {"body", B8(01110),'O', Html_tag_open_body, NULL, Html_tag_close_body},
+ {"br", B8(01001),'F', Html_tag_open_default, Html_tag_content_br, NULL},
+ {"button", B8(01111),'R', Html_tag_open_button,NULL,Html_tag_close_button},
/* caption */
- {"center", B8(01110),'R',2, Html_tag_open_default, NULL, NULL},
- {"cite", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"code", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
+ {"center", B8(01110),'R', Html_tag_open_default, NULL, NULL},
+ {"cite", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"code", B8(01011),'R', Html_tag_open_default, NULL, NULL},
/* col 010010 'F' */
/* colgroup */
- {"dd", B8(01110),'O',1, Html_tag_open_dd, NULL, NULL},
- {"del", B8(01111),'R',2, Html_tag_open_default, NULL, NULL},
- {"dfn", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"dir", B8(01100),'R',2, Html_tag_open_dir, NULL, Html_tag_close_par},
+ {"dd", B8(01110),'O', Html_tag_open_dd, NULL, NULL},
+ {"del", B8(01111),'R', Html_tag_open_default, NULL, NULL},
+ {"dfn", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"dir", B8(01100),'R', Html_tag_open_dir, NULL, Html_tag_close_par},
/* TODO: complete <div> support! */
- {"div", B8(01110),'R',2, Html_tag_open_div, NULL, NULL},
- {"dl", B8(01100),'R',2, Html_tag_open_dl, NULL, Html_tag_close_par},
- {"dt", B8(01010),'O',1, Html_tag_open_dt, NULL, Html_tag_close_par},
- {"em", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"embed", B8(01001),'F',0, Html_tag_open_embed, Html_tag_content_embed,NULL},
+ {"div", B8(01110),'R', Html_tag_open_div, NULL, NULL},
+ {"dl", B8(01100),'R', Html_tag_open_dl, NULL, Html_tag_close_par},
+ {"dt", B8(01010),'O', Html_tag_open_dt, NULL, Html_tag_close_par},
+ {"em", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"embed", B8(01001),'F', Html_tag_open_embed, Html_tag_content_embed, NULL},
/* fieldset */
- {"figcaption", B8(01110),'R',2, Html_tag_open_default, NULL, NULL},
- {"figure", B8(01110),'R',2, Html_tag_open_default, NULL, NULL},
- {"font", B8(01011),'R',2, Html_tag_open_font, NULL, NULL},
- {"footer", B8(01110),'R',2, Html_tag_open_sectioning, NULL, NULL},
- {"form", B8(01110),'R',2, Html_tag_open_form, NULL, Html_tag_close_form},
- {"frame", B8(01000),'F',0, Html_tag_open_frame, Html_tag_content_frame,
+ {"figcaption", B8(01110),'R', Html_tag_open_default, NULL, NULL},
+ {"figure", B8(01110),'R', Html_tag_open_default, NULL, NULL},
+ {"font", B8(01011),'R', Html_tag_open_font, NULL, NULL},
+ {"footer", B8(01110),'R', Html_tag_open_sectioning, NULL, NULL},
+ {"form", B8(01110),'R', Html_tag_open_form, NULL, Html_tag_close_form},
+ {"frame", B8(01000),'F', Html_tag_open_frame, Html_tag_content_frame, NULL},
+ {"frameset", B8(01110),'R', Html_tag_open_default, Html_tag_content_frameset,
NULL},
- {"frameset", B8(01110),'R',2, Html_tag_open_default,
- Html_tag_content_frameset, NULL},
- {"h1", B8(01010),'R',2, Html_tag_open_h, NULL, NULL},
- {"h2", B8(01010),'R',2, Html_tag_open_h, NULL, NULL},
- {"h3", B8(01010),'R',2, Html_tag_open_h, NULL, NULL},
- {"h4", B8(01010),'R',2, Html_tag_open_h, NULL, NULL},
- {"h5", B8(01010),'R',2, Html_tag_open_h, NULL, NULL},
- {"h6", B8(01010),'R',2, Html_tag_open_h, NULL, NULL},
- {"head", B8(10111),'O',1, Html_tag_open_head, NULL, Html_tag_close_head},
- {"header", B8(01110),'R',2, Html_tag_open_sectioning, NULL, NULL},
- {"hr", B8(01000),'F',0, Html_tag_open_hr, Html_tag_content_hr,
- NULL},
- {"html", B8(00110),'O',1, Html_tag_open_html, NULL, Html_tag_close_html},
- {"i", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"iframe", B8(01111),'R',2, Html_tag_open_frame, Html_tag_content_frame,
- NULL},
- {"img", B8(01001),'F',0, Html_tag_open_img, Html_tag_content_img,
- NULL},
- {"input", B8(01001),'F',0, Html_tag_open_input, NULL, NULL},
- {"ins", B8(01111),'R',2, Html_tag_open_default, NULL, NULL},
- {"isindex", B8(11001),'F',0, Html_tag_open_isindex, NULL, NULL},
- {"kbd", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
+ {"h1", B8(01010),'R', Html_tag_open_h, NULL, NULL},
+ {"h2", B8(01010),'R', Html_tag_open_h, NULL, NULL},
+ {"h3", B8(01010),'R', Html_tag_open_h, NULL, NULL},
+ {"h4", B8(01010),'R', Html_tag_open_h, NULL, NULL},
+ {"h5", B8(01010),'R', Html_tag_open_h, NULL, NULL},
+ {"h6", B8(01010),'R', Html_tag_open_h, NULL, NULL},
+ {"head", B8(10111),'O', Html_tag_open_head, NULL, Html_tag_close_head},
+ {"header", B8(01110),'R', Html_tag_open_sectioning, NULL, NULL},
+ {"hr", B8(01000),'F', Html_tag_open_hr, Html_tag_content_hr, NULL},
+ {"html", B8(00110),'O', Html_tag_open_html, NULL, Html_tag_close_html},
+ {"i", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"iframe", B8(01111),'R', Html_tag_open_frame, Html_tag_content_frame, NULL},
+ {"img", B8(01001),'F', Html_tag_open_img, Html_tag_content_img, NULL},
+ {"input", B8(01001),'F', Html_tag_open_input, NULL, NULL},
+ {"ins", B8(01111),'R', Html_tag_open_default, NULL, NULL},
+ {"isindex", B8(11001),'F', Html_tag_open_isindex, NULL, NULL},
+ {"kbd", B8(01011),'R', Html_tag_open_default, NULL, NULL},
/* label 010101 */
/* legend 01?? */
- {"li", B8(01110),'O',1, Html_tag_open_li, NULL, Html_tag_close_li},
- {"link", B8(10001),'F',0, Html_tag_open_link, NULL, NULL},
- {"map", B8(01101),'R',2, Html_tag_open_default, Html_tag_content_map,
- Html_tag_close_map},
- {"mark", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
+ {"li", B8(01110),'O', Html_tag_open_li, NULL, Html_tag_close_li},
+ {"link", B8(10001),'F', Html_tag_open_link, NULL, NULL},
+ {"map", B8(01101),'R', Html_tag_open_default, Html_tag_content_map,
+ Html_tag_close_map},
+ {"mark", B8(01011),'R', Html_tag_open_default, NULL, NULL},
/* menu 1010 -- TODO: not exactly 1010, it can contain LI and inline */
- {"menu", B8(01100),'R',2, Html_tag_open_menu, NULL, Html_tag_close_par},
- {"meta", B8(11001),'F',0, Html_tag_open_meta, NULL, NULL},
- {"nav", B8(01110),'R',2, Html_tag_open_sectioning, NULL, NULL},
+ {"menu", B8(01100),'R', Html_tag_open_menu, NULL, Html_tag_close_par},
+ {"meta", B8(11001),'F', Html_tag_open_meta, NULL, NULL},
+ {"nav", B8(01110),'R', Html_tag_open_sectioning, NULL, NULL},
/* noframes 1011 -- obsolete in HTML5 */
/* noscript 1011 */
- {"object", B8(11111),'R',2, Html_tag_open_object, Html_tag_content_object,
- NULL},
- {"ol", B8(01100),'R',2, Html_tag_open_ol, NULL, NULL},
- {"optgroup", B8(01011),'O',1, Html_tag_open_optgroup, NULL,
- Html_tag_close_optgroup},
- {"option", B8(01001),'O',0, Html_tag_open_option,NULL,Html_tag_close_option},
- {"p", B8(01010),'O',1, Html_tag_open_p, NULL, NULL},
+ {"object", B8(11111),'R', Html_tag_open_object, Html_tag_content_object,NULL},
+ {"ol", B8(01100),'R', Html_tag_open_ol, NULL, NULL},
+ {"optgroup", B8(01011),'O', Html_tag_open_optgroup, NULL,
+ Html_tag_close_optgroup},
+ {"option", B8(01001),'O', Html_tag_open_option, NULL, Html_tag_close_option},
+ {"p", B8(01010),'O', Html_tag_open_p, NULL, NULL},
/* param 010001 'F' */
- {"pre", B8(01010),'R',2, Html_tag_open_pre, NULL, Html_tag_close_pre},
- {"q", B8(01011),'R',2, Html_tag_open_q, NULL, Html_tag_close_q},
- {"s", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"samp", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"script", B8(11101),'R',2, Html_tag_open_script,NULL,Html_tag_close_script},
- {"section", B8(01110),'R',2, Html_tag_open_sectioning, NULL, NULL},
- {"select", B8(01011),'R',2, Html_tag_open_select,NULL,Html_tag_close_select},
- {"small", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"source", B8(01001),'F',0, Html_tag_open_source, Html_tag_content_source,
- NULL},
- {"span", B8(01011),'R',2, Html_tag_open_span, NULL, NULL},
- {"strike", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"strong", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"style", B8(10011),'R',2, Html_tag_open_style, NULL, Html_tag_close_style},
- {"sub", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"sup", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"table", B8(01100),'R',5, Html_tag_open_table, Html_tag_content_table, NULL},
+ {"pre", B8(01010),'R', Html_tag_open_pre, NULL, Html_tag_close_pre},
+ {"q", B8(01011),'R', Html_tag_open_q, NULL, Html_tag_close_q},
+ {"s", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"samp", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"script", B8(11101),'R', Html_tag_open_script,NULL,Html_tag_close_script},
+ {"section", B8(01110),'R', Html_tag_open_sectioning, NULL, NULL},
+ {"select", B8(01011),'R', Html_tag_open_select,NULL,Html_tag_close_select},
+ {"small", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"source", B8(01001),'F', Html_tag_open_source, Html_tag_content_source,NULL},
+ {"span", B8(01011),'R', Html_tag_open_span, NULL, NULL},
+ {"strike", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"strong", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"style", B8(10011),'R', Html_tag_open_style, NULL, Html_tag_close_style},
+ {"sub", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"sup", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"table", B8(01100),'R', Html_tag_open_table, Html_tag_content_table, NULL},
/* tbody */
- {"td", B8(01110),'O',3, Html_tag_open_td, Html_tag_content_td,
- NULL},
- {"textarea", B8(01011),'R', 2, Html_tag_open_textarea,
- Html_tag_content_textarea, Html_tag_close_textarea},
+ {"td", B8(01110),'O', Html_tag_open_td, Html_tag_content_td, NULL},
+ {"textarea", B8(01011),'R', Html_tag_open_textarea, Html_tag_content_textarea,
+ Html_tag_close_textarea},
/* tfoot */
- {"th", B8(01110),'O',1, Html_tag_open_th, Html_tag_content_th,
- NULL},
+ {"th", B8(01110),'O', Html_tag_open_th, Html_tag_content_th, NULL},
/* thead */
- {"title", B8(10011),'R',2, Html_tag_open_title, NULL, Html_tag_close_title},
- {"tr", B8(01100),'O',4, Html_tag_open_tr, Html_tag_content_tr,
- NULL},
- {"tt", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"u", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"ul", B8(01100),'R',2, Html_tag_open_ul, NULL, NULL},
- {"var", B8(01011),'R',2, Html_tag_open_default, NULL, NULL},
- {"video", B8(01111),'R',2, Html_tag_open_video, NULL, Html_tag_close_media},
- {"wbr", B8(01011),'F',0, Html_tag_open_default, Html_tag_content_wbr, NULL}
+ {"title", B8(10011),'R', Html_tag_open_title, NULL, Html_tag_close_title},
+ {"tr", B8(01100),'O', Html_tag_open_tr, Html_tag_content_tr, NULL},
+ {"tt", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"u", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"ul", B8(01100),'R', Html_tag_open_ul, NULL, NULL},
+ {"var", B8(01011),'R', Html_tag_open_default, NULL, NULL},
+ {"video", B8(01111),'R', Html_tag_open_video, NULL, Html_tag_close_media},
+ {"wbr", B8(01011),'F', Html_tag_open_default, Html_tag_content_wbr, NULL}
};
#define NTAGS (sizeof(Tags)/sizeof(Tags[0]))