Patch: Elm ME+ 2.5 PLalpha62 -> Elm ME+ 2.5 PLalpha63 [5/7] (6/7)
From
Kari Hurtta@21:1/5 to
All on Wed Jan 3 13:52:43 2024
[continued from previous message]
+ tag_command(html_div_tag),
+ tag_command(html_dl_tag),
+
+ tag_command(html_em_tag),
+ tag_command(html_embed_tag),
+
+ tag_command(html_fieldset_tag),
+ tag_command(html_figure_tag),
+ tag_command(html_footer_tag),
+ #if 0 /* Not allowed */
+ tag_command(html_form_tag),
+ #endif
+
+ tag_command(html_h1_tag),
+ tag_command(html_h2_tag),
+ tag_command(html_h3_tag),
+ tag_command(html_h4_tag),
+ tag_command(html_h5_tag),
+ tag_command(html_h6_tag),
+ tag_command(html_header_tag),
+ tag_command(html_hgroup_tag),
+ tag_command(html_hr_tag),
+
+ tag_command(html_i_tag),
+ tag_command(html_iframe_tag),
+ tag_command(html_img_tag),
+ tag_command(html_input_tag),
+ tag_command(html_ins_tag),
+
+ tag_command(html_kbd_tag),
+
+ tag_command(html_label_tag),
+ tag_command(html_link_tag),
+
+ tag_command(html_main_tag),
+ tag_command(html_map_tag),
+ tag_command(html_mark_tag),
+ tag_command(mathml_math_tag),
+ tag_command(html_menu_tag),
+ tag_command(html_meta_tag),
+ tag_command(html_meter_tag),
+
+ tag_command(html_nav_tag),
+ tag_command(html_noscript_body_tag),
+
+ tag_command(html_object_tag),
+ tag_command(html_ol_tag),
+ tag_command(html_output_tag),
+
+ tag_command(html_p_tag),
+ tag_command(html_picture_tag),
+ tag_command(html_pre_tag),
+ tag_command(html_progress_tag),
+
+ tag_command(html_q_tag),
+
+ tag_command(html_ruby_tag),
+
+ tag_command(html_s_tag),
+ tag_command(html_samp_tag),
+ tag_command(html_script_tag),
+ tag_command(html_search_tag),
+ tag_command(html_section_tag),
+ tag_command(html_select_tag),
+ tag_command(html_slot_tag),
+ tag_command(html_small_tag),
+ tag_command(html_span_tag),
+ tag_command(html_strong_tag),
+ tag_command(html_sub_tag),
+ tag_command(html_sup_tag),
+ tag_command(svg_svg_tag),
+
+ tag_command(html_table_tag),
+ tag_command(html_template_tag),
+ tag_command(html_textarea_tag),
+ tag_command(html_time_tag),
+
+ tag_command(html_u_tag),
+ tag_command(html_ul_tag),
+
+ tag_command(html_var_tag),
+ tag_command(html_video_tag),
+
+ tag_command(html_wbr_tag),
+
+ /* "autonomous custom elements, text" */
+
+ NULL
+
+ };
+
+ /* "Zero or more p elements, followed by one h1, h2, h3, h4, h5, or h6 element,
+ followed by zero or more p elements, optionally intermixed with script-supporting elements.
+ */
+
+ struct tagfilter_cmd * tagfilter_html_hgroup[] = {
+ tag_command(html_h1_tag),
+ tag_command(html_h2_tag),
+ tag_command(html_h3_tag),
+ tag_command(html_h4_tag),
+ tag_command(html_h5_tag),
+ tag_command(html_h6_tag),
+ tag_command(html_p_tag),
+
+ /* Script-supporting elements */
+
+ tag_command(html_script_tag),
+ tag_command(html_template_tag),
+
+ NULL
+ };
+
+
+ /* Can not really described here
+
+ "Phrasing content, but with no descendant labelable elements
+ unless it is the element's labeled control, and no descendant label elements."
+
+ */
+
+ struct tagfilter_cmd * tagfilter_html_label[] = {
+
+ tag_command(html_a_tag),
+ tag_command(html_abbr_tag),
+ tag_command(html_area_tag),
+ tag_command(html_audio_tag),
+
+ tag_command(html_b_tag),
+ tag_command(html_bdi_tag),
+ tag_command(html_bdo_tag),
+ tag_command(html_br_tag),
+ tag_command(html_button_tag),
+
+ tag_command(html_canvas_tag),
+ tag_command(html_cite_tag),
+ tag_command(html_code_tag),
+
+ tag_command(html_data_tag),
+ tag_command(html_datalist_tag),
+ tag_command(html_del_tag),
+ tag_command(html_dfn_tag),
+
+ tag_command(html_em_tag),
+ tag_command(html_embed_tag),
+
+ tag_command(html_i_tag),
+ tag_command(html_iframe_tag),
+ tag_command(html_img_tag),
+ tag_command(html_input_tag),
+ tag_command(html_ins_tag),
+
+ tag_command(html_kbd_tag),
+
+ #if 0 /* Not allowed */
+ tag_command(html_label_tag),
+ #endif
+ tag_command(html_link_tag),
+
+ tag_command(html_map_tag),
+ tag_command(html_mark_tag),
+ tag_command(mathml_math_tag),
+ tag_command(html_meta_tag),
+ tag_command(html_meter_tag),
+
+ tag_command(html_noscript_body_tag),
+
+ tag_command(html_object_tag),
+ tag_command(html_output_tag),
+
+ tag_command(html_picture_tag),
+ tag_command(html_progress_tag),
+
+ tag_command(html_q_tag),
+
+ tag_command(html_ruby_tag),
+
+ tag_command(html_s_tag),
+ tag_command(html_samp_tag),
+ tag_command(html_script_tag),
+ tag_command(html_select_tag),
+ tag_command(html_slot_tag),
+ tag_command(html_small_tag),
+ tag_command(html_span_tag),
+ tag_command(html_strong_tag),
+ tag_command(html_sub_tag),
+ tag_command(html_sup_tag),
+ tag_command(svg_svg_tag),
+
+ tag_command(html_template_tag),
+ tag_command(html_textarea_tag),
+ tag_command(html_time_tag),
+
+ tag_command(html_u_tag),
+
+ tag_command(html_var_tag),
+ tag_command(html_video_tag),
+
+ tag_command(html_wbr_tag),
+
+ /* "autonomous custom elements, text" */
+
+
+ NULL
+ };
+
+ static struct TAGFILTER_CMD html_li_tag =
+ { TAGFILTER_CMD_magic, 1, "li", 0, htmlC(tfc_html_li),
+ &text_html_flow,
+
+ TAGFLT_CMD_is_static,
+
+ NULL,
+
+ /* "An li element's end tag can be omitted if the li element is
+ immediately followed by another li element or if there is no more content
+ in the parent element."
+ */
+
+ &text_html_close_li };
+
+ /* "Zero or more li and script-supporting elements." */
+
+ struct tagfilter_cmd * tagfilter_html_list_items[] = {
+ tag_command(html_li_tag),
+
+ /* Script-supporting elements */
+
+ tag_command(html_script_tag),
+ tag_command(html_template_tag),
+
+ NULL
+ };
+
+ /* "An li element's end tag can be omitted if the li element
+ is immediately followed by another li element or if there is no more
+ content in the parent element."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_close_li[] = {
+ tag_command(html_li_tag),
+
+ NULL
+ };
+
+
+ /* Can not really described here
+
+ "A p element's end tag can be omitted if the p element is immediately followed by an
+ address, article, aside, blockquote, details, div, dl, fieldset, figcaption, figure,
+ footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, main, menu, nav, ol, p,
+ pre, search, section, table, or ul element, or if there is no more content in the
+ parent element and the parent element is an HTML element that is not an a, audio,
+ del, ins, map, noscript, or video element, or an autonomous custom element."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_close_p[] = {
+
+ tag_command(html_address_tag),
+ tag_command(html_article_tag),
+ tag_command(html_aside_tag),
+
+ tag_command(html_blockquote_tag),
+
+ tag_command(html_details_tag),
+ tag_command(html_div_tag),
+ tag_command(html_dl_tag),
+
+ tag_command(html_fieldset_tag),
+ tag_command(html_figcaption_tag),
+ tag_command(html_figure_tag),
+ tag_command(html_footer_tag),
+ tag_command(html_form_tag),
+
+ tag_command(html_h1_tag),
+ tag_command(html_h2_tag),
+ tag_command(html_h3_tag),
+ tag_command(html_h4_tag),
+ tag_command(html_h5_tag),
+ tag_command(html_h6_tag),
+ tag_command(html_header_tag),
+ tag_command(html_hgroup_tag),
+ tag_command(html_hr_tag),
+
+ tag_command(html_main_tag),
+ tag_command(html_menu_tag),
+
+ tag_command(html_nav_tag),
+
+ tag_command(html_ol_tag),
+
+ tag_command(html_p_tag),
+ tag_command(html_pre_tag),
+
+ tag_command(html_search_tag),
+ tag_command(html_section_tag),
+
+ tag_command(html_table_tag),
+
+ tag_command(html_ul_tag),
+
+ NULL
+ };
+
+ /* Can not really described here
+
+ "Flow content, but with no heading content descendants,
+ no sectioning content descendants, and no header, footer,
+ or address element descendants."
+
+ */
+
+ struct tagfilter_cmd * tagfilter_html_address[] = {
+
+ tag_command(html_a_tag),
+ tag_command(html_abbr_tag),
+ #if 0 /* Not allowed */
+ tag_command(html_address_tag),
+ #endif
+ tag_command(html_area_tag),
+ tag_command(html_article_tag),
+ tag_command(html_aside_tag),
+ tag_command(html_audio_tag),
+
+ tag_command(html_b_tag),
+ tag_command(html_bdi_tag),
+ tag_command(html_bdo_tag),
+ tag_command(html_blockquote_tag),
+ tag_command(html_br_tag),
+ tag_command(html_button_tag),
+
+ tag_command(html_canvas_tag),
+ tag_command(html_cite_tag),
+ tag_command(html_code_tag),
+
+ tag_command(html_data_tag),
+ tag_command(html_datalist_tag),
+ tag_command(html_del_tag),
+ tag_command(html_details_tag),
+ tag_command(html_dfn_tag),
+ tag_command(html_dialog_tag),
+ tag_command(html_div_tag),
+ tag_command(html_dl_tag),
+
+ tag_command(html_em_tag),
+ tag_command(html_embed_tag),
+
+ tag_command(html_fieldset_tag),
+ tag_command(html_figure_tag),
+ #if 0 /* Not allowed */
+ tag_command(html_footer_tag),
+ #endif
+ tag_command(html_form_tag),
+
+ #if 0 /* Not allowed */
+ tag_command(html_h1_tag),
+ tag_command(html_h2_tag),
+ tag_command(html_h3_tag),
+ tag_command(html_h4_tag),
+ tag_command(html_h5_tag),
+ tag_command(html_h6_tag),
+ tag_command(html_header_tag),
+ tag_command(html_hgroup_tag),
+ #endif
+ tag_command(html_hr_tag),
+
+ tag_command(html_i_tag),
+ tag_command(html_iframe_tag),
+ tag_command(html_img_tag),
+ tag_command(html_input_tag),
+ tag_command(html_ins_tag),
+
+ tag_command(html_kbd_tag),
+
+ tag_command(html_label_tag),
+ tag_command(html_link_tag),
+
+ tag_command(html_main_tag),
+ tag_command(html_map_tag),
+ tag_command(html_mark_tag),
+ tag_command(mathml_math_tag),
+ tag_command(html_menu_tag),
+ tag_command(html_meta_tag),
+ tag_command(html_meter_tag),
+
+ tag_command(html_nav_tag),
+ tag_command(html_noscript_body_tag),
+
+ tag_command(html_object_tag),
+ tag_command(html_ol_tag),
+ tag_command(html_output_tag),
+
+ tag_command(html_p_tag),
+ tag_command(html_picture_tag),
+ tag_command(html_pre_tag),
+ tag_command(html_progress_tag),
+
+ tag_command(html_q_tag),
+
+ tag_command(html_ruby_tag),
+
+ tag_command(html_s_tag),
+ tag_command(html_samp_tag),
+ tag_command(html_script_tag),
+ tag_command(html_search_tag),
+ tag_command(html_section_tag),
+ tag_command(html_select_tag),
+ tag_command(html_slot_tag),
+ tag_command(html_small_tag),
+ tag_command(html_span_tag),
+ tag_command(html_strong_tag),
+ tag_command(html_sub_tag),
+ tag_command(html_sup_tag),
+ tag_command(svg_svg_tag),
+
+ tag_command(html_table_tag),
+ tag_command(html_template_tag),
+ tag_command(html_textarea_tag),
+ tag_command(html_time_tag),
+
+ tag_command(html_u_tag),
+ tag_command(html_ul_tag),
+
+ tag_command(html_var_tag),
+ tag_command(html_video_tag),
+
+ tag_command(html_wbr_tag),
+
+ /* "autonomous custom elements, text" */
+
+ NULL
+ };
+
+ /* Can not really described here
+
+ "Phrasing content, but there must be no
+ meter element descendants."
+
+ */
+
+ struct tagfilter_cmd * tagfilter_html_meter[] = {
+
+ tag_command(html_a_tag),
+ tag_command(html_abbr_tag),
+ tag_command(html_area_tag),
+ tag_command(html_audio_tag),
+
+ tag_command(html_b_tag),
+ tag_command(html_bdi_tag),
+ tag_command(html_bdo_tag),
+ tag_command(html_br_tag),
+ tag_command(html_button_tag),
+
+ tag_command(html_canvas_tag),
+ tag_command(html_cite_tag),
+ tag_command(html_code_tag),
+
+ tag_command(html_data_tag),
+ tag_command(html_datalist_tag),
+ tag_command(html_del_tag),
+ tag_command(html_dfn_tag),
+
+ tag_command(html_em_tag),
+ tag_command(html_embed_tag),
+
+ tag_command(html_i_tag),
+ tag_command(html_iframe_tag),
+ tag_command(html_img_tag),
+ tag_command(html_input_tag),
+ tag_command(html_ins_tag),
+
+ tag_command(html_kbd_tag),
+
+ tag_command(html_label_tag),
+ tag_command(html_link_tag),
+
+ tag_command(html_map_tag),
+ tag_command(html_mark_tag),
+ tag_command(mathml_math_tag),
+ tag_command(html_meta_tag),
+ #if 0 /* Not allowed */
+ tag_command(html_meter_tag),
+ #endif
+
+ tag_command(html_noscript_body_tag),
+
+ tag_command(html_object_tag),
+ tag_command(html_output_tag),
+
+ tag_command(html_picture_tag),
+ tag_command(html_progress_tag),
+
+ tag_command(html_q_tag),
+
+ tag_command(html_ruby_tag),
+
+ tag_command(html_s_tag),
+ tag_command(html_samp_tag),
+ tag_command(html_script_tag),
+ tag_command(html_select_tag),
+ tag_command(html_slot_tag),
+ tag_command(html_small_tag),
+ tag_command(html_span_tag),
+ tag_command(html_strong_tag),
+ tag_command(html_sub_tag),
+ tag_command(html_sup_tag),
+ tag_command(svg_svg_tag),
+
+ tag_command(html_template_tag),
+ tag_command(html_textarea_tag),
+ tag_command(html_time_tag),
+
+ tag_command(html_u_tag),
+
+ tag_command(html_var_tag),
+ tag_command(html_video_tag),
+
+ tag_command(html_wbr_tag),
+
+ /* "autonomous custom elements, text" */
+
+ NULL
+ };
+
+
+ static struct TAGFILTER_CMD html_source_tag =
+ { TAGFILTER_CMD_magic, 1, "source", 0, baseC(tfc_unsupported), NULL,
+ TAGFLT_CMD_is_static|TAGFLT_CMD_no_context,
+ NULL, NULL };
+
+
+ /* "Zero or more source elements, followed by one
+ img element, optionally intermixed with script-supporting
+ elements."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_picture[] = {
+ tag_command(html_source_tag),
+ tag_command(html_img_tag),
+
+ /* Script-supporting elements */
+
+ tag_command(html_script_tag),
+ tag_command(html_template_tag),
+
+ NULL
+ };
+
+ /* Can not really described here
+
+ "Phrasing content, but there must be no progress
+ element descendants."
+
+ */
+
+ struct tagfilter_cmd * tagfilter_html_progress[] = {
+
+ tag_command(html_a_tag),
+ tag_command(html_abbr_tag),
+ tag_command(html_area_tag),
+ tag_command(html_audio_tag),
+
+ tag_command(html_b_tag),
+ tag_command(html_bdi_tag),
+ tag_command(html_bdo_tag),
+ tag_command(html_br_tag),
+ tag_command(html_button_tag),
+
+ tag_command(html_canvas_tag),
+ tag_command(html_cite_tag),
+ tag_command(html_code_tag),
+
+ tag_command(html_data_tag),
+ tag_command(html_datalist_tag),
+ tag_command(html_del_tag),
+ tag_command(html_dfn_tag),
+
+ tag_command(html_em_tag),
+ tag_command(html_embed_tag),
+
+ tag_command(html_i_tag),
+ tag_command(html_iframe_tag),
+ tag_command(html_img_tag),
+ tag_command(html_input_tag),
+ tag_command(html_ins_tag),
+
+ tag_command(html_kbd_tag),
+
+ tag_command(html_label_tag),
+ tag_command(html_link_tag),
+
+ tag_command(html_map_tag),
+ tag_command(html_mark_tag),
+ tag_command(mathml_math_tag),
+ tag_command(html_meta_tag),
+ tag_command(html_meter_tag),
+
+ tag_command(html_noscript_body_tag),
+
+ tag_command(html_object_tag),
+ tag_command(html_output_tag),
+
+ tag_command(html_picture_tag),
+ #if 0 /* Not allowed */
+ tag_command(html_progress_tag),
+ #endif
+
+ tag_command(html_q_tag),
+
+ tag_command(html_ruby_tag),
+
+ tag_command(html_s_tag),
+ tag_command(html_samp_tag),
+ tag_command(html_script_tag),
+ tag_command(html_select_tag),
+ tag_command(html_slot_tag),
+ tag_command(html_small_tag),
+ tag_command(html_span_tag),
+ tag_command(html_strong_tag),
+ tag_command(html_sub_tag),
+ tag_command(html_sup_tag),
+ tag_command(svg_svg_tag),
+
+ tag_command(html_template_tag),
+ tag_command(html_textarea_tag),
+ tag_command(html_time_tag),
+
+ tag_command(html_u_tag),
+
+ tag_command(html_var_tag),
+ tag_command(html_video_tag),
+
+ tag_command(html_wbr_tag),
+
+ /* "autonomous custom elements, text" */
+
+
+ NULL
+ };
+
+ static struct TAGFILTER_CMD html_rt_tag =
+ { TAGFILTER_CMD_magic, 1, "rt", 0, baseC(tfc_unsupported),
+ & text_html_phrasing,
+
+ TAGFLT_CMD_is_static,
+ NULL,
+
+ /* "An rt element's end tag can be omitted
+ if the rt element is immediately followed
+ by an rt or rp element, or if there is no more
+ content in the parent element."
+ */
+ & text_html_close_rtrp
+ };
+
+ static struct TAGFILTER_CMD html_rp_tag =
+ { TAGFILTER_CMD_magic, 1, "rp", 0, baseC(tfc_unsupported),
+ NULL /* Text */,
+
+
+ TAGFLT_CMD_is_static,
+ NULL,
+
+ /* "An rp element's end tag can be omitted
+ if the rp element is immediately followed by
+ an rt or rp element, or if there is no
+ more content in the parent element."
+ */
+ & text_html_close_rtrp
+ };
+
+ /* Can not really described here
+
+ "One or the other of the following:
+ Phrasing content, but with no ruby elements and with no ruby
+ element descendants
+ A single ruby element that itself has no ruby element descendants
+ One or the other of the following:
+ One or more rt elements
+ An rp element followed by one or more rt elements, each of which
+ is itself followed by an rp element "
+ */
+
+
+ struct tagfilter_cmd * tagfilter_html_ruby[] = {
+ tag_command(html_rt_tag),
+ tag_command(html_rp_tag),
+
+ /* Phrasing content - also ruby included */
+
+ tag_command(html_a_tag),
+ tag_command(html_abbr_tag),
+ tag_command(html_area_tag),
+ tag_command(html_audio_tag),
+
+ tag_command(html_b_tag),
+ tag_command(html_bdi_tag),
+ tag_command(html_bdo_tag),
+ tag_command(html_br_tag),
+ tag_command(html_button_tag),
+
+ tag_command(html_canvas_tag),
+ tag_command(html_cite_tag),
+ tag_command(html_code_tag),
+
+ tag_command(html_data_tag),
+ tag_command(html_datalist_tag),
+ tag_command(html_del_tag),
+ tag_command(html_dfn_tag),
+
+ tag_command(html_em_tag),
+ tag_command(html_embed_tag),
+
+ tag_command(html_i_tag),
+ tag_command(html_iframe_tag),
+ tag_command(html_img_tag),
+ tag_command(html_input_tag),
+ tag_command(html_ins_tag),
+
+ tag_command(html_kbd_tag),
+
+ tag_command(html_label_tag),
+ tag_command(html_link_tag),
+
+ tag_command(html_map_tag),
+ tag_command(html_mark_tag),
+ tag_command(mathml_math_tag),
+ tag_command(html_meta_tag),
+ tag_command(html_meter_tag),
+
+ tag_command(html_noscript_body_tag),
+
+ tag_command(html_object_tag),
+ tag_command(html_output_tag),
+
+ tag_command(html_picture_tag),
+ tag_command(html_progress_tag),
+
+ tag_command(html_q_tag),
+
+ tag_command(html_ruby_tag),
+
+ tag_command(html_s_tag),
+ tag_command(html_samp_tag),
+ tag_command(html_script_tag),
+ tag_command(html_select_tag),
+ tag_command(html_slot_tag),
+ tag_command(html_small_tag),
+ tag_command(html_span_tag),
+ tag_command(html_strong_tag),
+ tag_command(html_sub_tag),
+ tag_command(html_sup_tag),
+ tag_command(svg_svg_tag),
+
+ tag_command(html_template_tag),
+ tag_command(html_textarea_tag),
+ tag_command(html_time_tag),
+
+ tag_command(html_u_tag),
+
+ tag_command(html_var_tag),
+ tag_command(html_video_tag),
+
+ tag_command(html_wbr_tag),
+
+ /* "autonomous custom elements, text" */
+
+ NULL
+ };
+
+
+ static struct TAGFILTER_CMD html_caption_tag =
+ { TAGFILTER_CMD_magic, 1, "caption", 0, baseC(tfc_unsupported),
+ &text_html_caption
+ /* "Flow content, but with no descendant table elements." */,
+
+ TAGFLT_CMD_is_static|TAGFLT_CMD_close_search,
+ NULL,
+ NULL
+
+ /* "A caption element's end tag can be omitted if the caption element is not immediately
+ followed by ASCII whitespace or a comment."
+ */
+ };
+
+
+ static struct TAGFILTER_CMD html_colgroup_tag =
+ { TAGFILTER_CMD_magic, 1, "colgroup", 0, baseC(tfc_unsupported),
+ &text_html_colgroup
+ /* "If the span attribute is present: Nothing.
+ If the span attribute is absent: Zero or more col and template elements."
+ */,
+
+ TAGFLT_CMD_is_static|TAGFLT_CMD_close_search|TAGFLT_CMD_nested_search, +
+ NULL, NULL
+
+ /* "A colgroup element's start tag can be omitted if the first thing inside the
+ colgroup element is a col element, and if the element is not immediately preceded
+ by another colgroup element whose end tag has been omitted. (It can't be omitted
+ if the element is empty.)
+ A colgroup element's end tag can be omitted if the colgroup element is not immediately
+ followed by ASCII whitespace or a comment."
+ */
+ };
+
+ static struct TAGFILTER_CMD html_thead_tag =
+ { TAGFILTER_CMD_magic, 1, "thead", 0, baseC(tfc_unsupported),
+ &text_html_tr_list
+ /* "Zero or more tr and script-supporting elements." */,
+
+ TAGFLT_CMD_is_static,
+ NULL,
+
+ &text_html_close_thead
+ /* "A thead element's end tag can be omitted if the thead
+ element is immediately followed by a tbody or tfoot element."
+ */
+ };
+
+ static struct TAGFILTER_CMD html_tbody_tag =
+ { TAGFILTER_CMD_magic, 1, "tbody", 0, baseC(tfc_unsupported),
+ &text_html_tr_list
+ /* "Zero or more tr and script-supporting elements." */,
+
+ TAGFLT_CMD_is_static|TAGFLT_CMD_nested_search,
+ /* "A tbody element's start tag can be omitted if the first thing
+ inside the tbody element is a tr element, and if the element is not
+ immediately preceded by a tbody, thead, or tfoot element whose end + tag has been omitted. (It can't be omitted if the element is empty.)" + */
+
+ NULL,
+
+ &text_html_close_tbody
+ /* "A tbody element's end tag can be omitted if the tbody element
+ is immediately followed by a tbody or tfoot element, or
+ if there is no more content in the parent element." */
+ };
+
+ static struct TAGFILTER_CMD html_tr_tag =
+ { TAGFILTER_CMD_magic, 1, "tr", 0, baseC(tfc_unsupported),
+ &text_html_tr
+ /* "Zero or more td, th, and script-supporting elements." */,
+
+ TAGFLT_CMD_is_static|TAGFLT_CMD_force_newline,
+ NULL,
+
+ &text_html_close_tr
+ /* "A tr element's end tag can be omitted if the tr element is
+ immediately followed by another tr element, or if there is
+ no more content in the parent element."
+ */
+ };
+
+
+ static struct TAGFILTER_CMD html_tfoot_tag =
+ { TAGFILTER_CMD_magic, 1, "tfoot", 0, baseC(tfc_unsupported),
+ &text_html_tr_list
+ /* "Zero or more tr and script-supporting elements." */,
+ TAGFLT_CMD_is_static,
+ NULL, NULL
+
+ /* "A tfoot element's end tag can be omitted if there is
+ no more content in the parent element."
+ */
+ };
+
+ /* Can not really described here
+
+ "In this order: optionally a caption element,
+ followed by zero or more colgroup elements,
+ followed optionally by a thead element,
+ followed by either zero or more tbody elements or one or
+ more tr elements, followed optionally by a tfoot element,
+ optionally intermixed with one or more script-supporting
+ elements."
+ */
+
+
+ struct tagfilter_cmd * tagfilter_html_table[] = {
+ tag_command(html_caption_tag),
+ tag_command(html_colgroup_tag),
+ tag_command(html_thead_tag),
+ tag_command(html_tbody_tag),
+ tag_command(html_tr_tag),
+ tag_command(html_tfoot_tag),
+
+ /* Script-supporting elements */
+
+ tag_command(html_script_tag),
+ tag_command(html_template_tag),
+
+ NULL
+ };
+
+
+ /* "If the element is a child of a dl element: one or more
+ dt elements followed by one or more dd elements,
+ optionally intermixed with script-supporting elements."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_div_dl[] = {
+ tag_command(html_dt_tag),
+ tag_command(html_dd_tag),
+
+ /* Script-supporting elements */
+
+ tag_command(html_script_tag),
+ tag_command(html_template_tag),
+
+ NULL
+ };
+
+ /* Can not really described here
+
+ "Flow content, but with no descendant table elements."
+
+ */
+
+
+ struct tagfilter_cmd * tagfilter_html_caption[] = {
+
+ tag_command(html_a_tag),
+ tag_command(html_abbr_tag),
+ tag_command(html_address_tag),
+ tag_command(html_area_tag),
+ tag_command(html_article_tag),
+ tag_command(html_aside_tag),
+ tag_command(html_audio_tag),
+
+ tag_command(html_b_tag),
+ tag_command(html_bdi_tag),
+ tag_command(html_bdo_tag),
+ tag_command(html_blockquote_tag),
+ tag_command(html_br_tag),
+ tag_command(html_button_tag),
+
+ tag_command(html_canvas_tag),
+ tag_command(html_cite_tag),
+ tag_command(html_code_tag),
+
+ tag_command(html_data_tag),
+ tag_command(html_datalist_tag),
+ tag_command(html_del_tag),
+ tag_command(html_details_tag),
+ tag_command(html_dfn_tag),
+ tag_command(html_dialog_tag),
+ tag_command(html_div_tag),
+ tag_command(html_dl_tag),
+
+ tag_command(html_em_tag),
+ tag_command(html_embed_tag),
+
+ tag_command(html_fieldset_tag),
+ tag_command(html_figure_tag),
+ tag_command(html_footer_tag),
+ tag_command(html_form_tag),
+
+ tag_command(html_h1_tag),
+ tag_command(html_h2_tag),
+ tag_command(html_h3_tag),
+ tag_command(html_h4_tag),
+ tag_command(html_h5_tag),
+ tag_command(html_h6_tag),
+ tag_command(html_header_tag),
+ tag_command(html_hgroup_tag),
+ tag_command(html_hr_tag),
+
+ tag_command(html_i_tag),
+ tag_command(html_iframe_tag),
+ tag_command(html_img_tag),
+ tag_command(html_input_tag),
+ tag_command(html_ins_tag),
+
+ tag_command(html_kbd_tag),
+
+ tag_command(html_label_tag),
+ tag_command(html_link_tag),
+
+ tag_command(html_main_tag),
+ tag_command(html_map_tag),
+ tag_command(html_mark_tag),
+ tag_command(mathml_math_tag),
+ tag_command(html_menu_tag),
+ tag_command(html_meta_tag),
+ tag_command(html_meter_tag),
+
+ tag_command(html_nav_tag),
+ tag_command(html_noscript_body_tag),
+
+ tag_command(html_object_tag),
+ tag_command(html_ol_tag),
+ tag_command(html_output_tag),
+
+ tag_command(html_p_tag),
+ tag_command(html_picture_tag),
+ tag_command(html_pre_tag),
+ tag_command(html_progress_tag),
+
+ tag_command(html_q_tag),
+
+ tag_command(html_ruby_tag),
+
+ tag_command(html_s_tag),
+ tag_command(html_samp_tag),
+ tag_command(html_script_tag),
+ tag_command(html_search_tag),
+ tag_command(html_section_tag),
+ tag_command(html_select_tag),
+ tag_command(html_slot_tag),
+ tag_command(html_small_tag),
+ tag_command(html_span_tag),
+ tag_command(html_strong_tag),
+ tag_command(html_sub_tag),
+ tag_command(html_sup_tag),
+ tag_command(svg_svg_tag),
+
+ #if 0 /* Not allowed */
+ tag_command(html_table_tag),
+ #endif
+ tag_command(html_template_tag),
+ tag_command(html_textarea_tag),
+ tag_command(html_time_tag),
+
+ tag_command(html_u_tag),
+ tag_command(html_ul_tag),
+
+ tag_command(html_var_tag),
+ tag_command(html_video_tag),
+
+ tag_command(html_wbr_tag),
+
+ /* "autonomous custom elements, text" */
+
+ NULL
+ };
+
+
+ static struct TAGFILTER_CMD html_col_tag =
+ { TAGFILTER_CMD_magic, 1, "col", 0, baseC(tfc_unsupported),
+ NULL /* Nothing */,
+ TAGFLT_CMD_is_static|TAGFLT_CMD_no_context,
+ NULL, NULL };
+
+ /* Can not really described here
+
+ "If the span attribute is present: Nothing.
+ If the span attribute is absent:
+ Zero or more col and template elements."
+
+ */
+
+
+ struct tagfilter_cmd * tagfilter_html_colgroup[] = {
+ tag_command(html_col_tag),
+ tag_command(html_template_tag),
+ NULL
+ };
+
+ /* "Zero or more tr and script-supporting elements." */
+
+ struct tagfilter_cmd * tagfilter_html_tr_list[] = {
+ tag_command(html_tr_tag),
+
+ /* Script-supporting elements */
+
+ tag_command(html_script_tag),
+ tag_command(html_template_tag),
+
+ NULL
+ };
+
+ static struct TAGFILTER_CMD html_td_tag =
+ { TAGFILTER_CMD_magic, 1, "td", 0, baseC(tfc_unsupported),
+ &text_html_flow,
+ TAGFLT_CMD_is_static,
+ NULL,
+ &text_html_close_td
+ /* "A td element's end tag can be omitted if the td element is immediately followed
+ by a td or th element, or if there is no more content in the parent element." */
+ };
+
+
+ static struct TAGFILTER_CMD html_th_tag =
+ { TAGFILTER_CMD_magic, 1, "th", 0, baseC(tfc_unsupported),
+ &text_html_th
+ /* "Flow content, but with no header, footer,
+ sectioning content, or heading content descendants."
+ */,
+
+ TAGFLT_CMD_is_static,
+ NULL,
+ &text_html_close_th
+ /* "A th element's end tag can be omitted if the th element
+ is immediately followed by a td or th element, or if
+ there is no more content in the parent element." */
+ };
+
+ /* "Zero or more td, th, and script-supporting elements." */
+
+
+ struct tagfilter_cmd * tagfilter_html_tr[] = {
+ tag_command(html_td_tag),
+ tag_command(html_th_tag),
+
+ /* Script-supporting elements */
+
+ tag_command(html_script_tag),
+ tag_command(html_template_tag),
+
+ NULL
+ };
+
+ /* "A thead element's end tag can be omitted if the thead
+ element is immediately followed by a tbody or tfoot element."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_close_thead[] = {
+ tag_command(html_tbody_tag),
+ tag_command(html_tfoot_tag),
+
+ NULL
+ };
+
+ /* "A tbody element's end tag can be omitted if the tbody
+ element is immediately followed by a tbody or tfoot element, or
+ if there is no more content in the parent element."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_close_tbody[] = {
+ tag_command(html_tbody_tag),
+ tag_command(html_tfoot_tag),
+
+ NULL
+ };
+
+ /* "A tr element's end tag can be omitted
+ if the tr element is immediately followed by
+ another tr element, or if there is no more
+ content in the parent element."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_close_tr[] = {
+ tag_command(html_tr_tag),
+
+ NULL
+ };
+
+ /* "A td element's end tag can be omitted
+ if the td element is immediately followed by a td or th element,
+ or if there is no more content in the parent element."
+ */
+
+ struct tagfilter_cmd * tagfilter_html_close_td[] = {
+ tag_command(html_td_tag),
+ tag_command(html_th_tag),
+
+ NULL
+ };
+
+ /* Can not really described here
+
+ "Flow content, but with no header, footer, sectioning content, or
+ heading content descendants."
+
+ */
+
+
+ struct tagfilter_cmd * tagfilter_html_th[] = {
+
+ tag_command(html_a_tag),
+ tag_command(html_abbr_tag),
+ tag_command(html_address_tag),
+ tag_command(html_area_tag),
+ #if 0 /* Not allowed */
+ tag_command(html_article_tag),
+ tag_command(html_aside_tag),
+ #endif
+ tag_command(html_audio_tag),
+
+ tag_command(html_b_tag),
+ tag_command(html_bdi_tag),
+ tag_command(html_bdo_tag),
[continued in next message]
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)