• 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)