Hubbub
Enumerations | Functions
modes.h File Reference
#include "treebuilder/treebuilder.h"

Go to the source code of this file.

Enumerations

enum  insertion_mode {
  INITIAL, BEFORE_HTML, BEFORE_HEAD, IN_HEAD,
  IN_HEAD_NOSCRIPT, AFTER_HEAD, IN_BODY, IN_TABLE,
  IN_CAPTION, IN_COLUMN_GROUP, IN_TABLE_BODY, IN_ROW,
  IN_CELL, IN_SELECT, IN_SELECT_IN_TABLE, IN_FOREIGN_CONTENT,
  AFTER_BODY, IN_FRAMESET, AFTER_FRAMESET, AFTER_AFTER_BODY,
  AFTER_AFTER_FRAMESET, GENERIC_RCDATA
}
 The various treebuilder insertion modes. More...
 

Functions

hubbub_error handle_initial (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in initial insertion mode. More...
 
hubbub_error handle_before_html (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "before html" insertion mode. More...
 
hubbub_error handle_before_head (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "before head" insertion mode. More...
 
hubbub_error handle_in_head (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "in head" insertion mode. More...
 
hubbub_error handle_in_head_noscript (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in head noscript" insertion mode. More...
 
hubbub_error handle_after_head (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "after head" insertion mode. More...
 
hubbub_error handle_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in body" insertion mode. More...
 
hubbub_error handle_in_table (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "in table" insertion mode. More...
 
hubbub_error handle_in_caption (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in caption" insertion mode. More...
 
hubbub_error handle_in_column_group (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in column group" insertion mode. More...
 
hubbub_error handle_in_table_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in table body" insertion mode. More...
 
hubbub_error handle_in_row (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in row" insertion mode. More...
 
hubbub_error handle_in_cell (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in cell" insertion mode. More...
 
hubbub_error handle_in_select (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "in head" insertion mode. More...
 
hubbub_error handle_in_select_in_table (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "in select in table" insertion mode. More...
 
hubbub_error handle_generic_rcdata (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "generic rcdata" insertion mode. More...
 
hubbub_error handle_script_collect_characters (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 
hubbub_error handle_in_foreign_content (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle tokens in "in foreign content" insertion mode. More...
 
hubbub_error handle_after_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "after body" insertion mode. More...
 
hubbub_error handle_in_frameset (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "in frameset" insertion mode. More...
 
hubbub_error handle_after_frameset (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "after frameset" insertion mode. More...
 
hubbub_error handle_after_after_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "after after body" insertion mode. More...
 
hubbub_error handle_after_after_frameset (hubbub_treebuilder *treebuilder, const hubbub_token *token)
 Handle token in "after after frameset" insertion mode. More...
 

Enumeration Type Documentation

◆ insertion_mode

The various treebuilder insertion modes.

Enumerator
INITIAL 
BEFORE_HTML 
BEFORE_HEAD 
IN_HEAD 
IN_HEAD_NOSCRIPT 
AFTER_HEAD 
IN_BODY 
IN_TABLE 
IN_CAPTION 
IN_COLUMN_GROUP 
IN_TABLE_BODY 
IN_ROW 
IN_CELL 
IN_SELECT 
IN_SELECT_IN_TABLE 
IN_FOREIGN_CONTENT 
AFTER_BODY 
IN_FRAMESET 
AFTER_FRAMESET 
AFTER_AFTER_BODY 
AFTER_AFTER_FRAMESET 
GENERIC_RCDATA 

Definition at line 14 of file modes.h.

Function Documentation

◆ handle_after_after_body()

hubbub_error handle_after_after_body ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

Handle token in "after after body" insertion mode.

Parameters
treebuilderThe treebuilder instance
tokenThe token to handle
Returns
HUBBUB_OK on completion, HUBBUB_REPROCESS to reprocess the token, appropriate error otherwise
Todo:
parse error
Todo:
parse error

Definition at line 26 of file after_after_body.c.

References hubbub_treebuilder::context, hubbub_token::data, hubbub_treebuilder_context::document, element_type_from_name(), handle_in_body(), HTML, HUBBUB_OK, HUBBUB_REPROCESS, HUBBUB_TOKEN_CHARACTER, HUBBUB_TOKEN_COMMENT, HUBBUB_TOKEN_DOCTYPE, HUBBUB_TOKEN_END_TAG, HUBBUB_TOKEN_EOF, HUBBUB_TOKEN_START_TAG, IN_BODY, hubbub_treebuilder_context::mode, hubbub_tag::name, process_characters_expect_whitespace(), process_comment_append(), hubbub_token::tag, type, and hubbub_token::type.

Referenced by hubbub_treebuilder_token_handler().

◆ handle_after_after_frameset()

hubbub_error handle_after_after_frameset ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_after_body()

hubbub_error handle_after_body ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_after_frameset()

hubbub_error handle_after_frameset ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_after_head()

hubbub_error handle_after_head ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_before_head()

hubbub_error handle_before_head ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_before_html()

hubbub_error handle_before_html ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_generic_rcdata()

hubbub_error handle_generic_rcdata ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_body()

hubbub_error handle_in_body ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_caption()

hubbub_error handle_in_caption ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_cell()

hubbub_error handle_in_cell ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_column_group()

hubbub_error handle_in_column_group ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_foreign_content()

hubbub_error handle_in_foreign_content ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

Handle tokens in "in foreign content" insertion mode.

Parameters
treebuilderThe treebuilder instance
tokenThe token to process
Returns
True to reprocess the token, false otherwise
Todo:
parse error
Todo:
ack sc flag

Definition at line 390 of file in_foreign_content.c.

References adjust_foreign_attributes(), adjust_svg_attributes(), adjust_svg_tagname(), ANNOTATION_XML, append_text(), hubbub_tag::attributes, B, BIG, BLOCKQUOTE, BODY, BR, CENTER, hubbub_token::character, CODE, hubbub_treebuilder::context, hubbub_treebuilder_context::current_node, current_node(), hubbub_token::data, DD, DESC, DIV, DL, DT, hubbub_treebuilder_context::element_stack, element_type_from_name(), EM, EMBED, FONT, foreign_break_out(), FOREIGNOBJECT, H1, H2, H3, H4, H5, H6, HEAD, HR, HUBBUB_NS_HTML, HUBBUB_NS_MATHML, HUBBUB_NS_SVG, HUBBUB_OK, HUBBUB_REPROCESS, hubbub_string_match(), HUBBUB_TOKEN_CHARACTER, HUBBUB_TOKEN_COMMENT, HUBBUB_TOKEN_DOCTYPE, HUBBUB_TOKEN_END_TAG, HUBBUB_TOKEN_EOF, HUBBUB_TOKEN_START_TAG, I, IMG, insert_element(), len, hubbub_string::len, LI, LISTING, MALIGNMARK, MENU, META, MGLYPH, MI, MN, MO, MS, MTEXT, hubbub_tag::n_attributes, name, hubbub_attribute::name, hubbub_tag::name, NOBR, element_context::node, element_context::ns, hubbub_tag::ns, OL, P, PRE, process_as_in_secondary(), process_comment_append(), hubbub_string::ptr, RUBY, S, hubbub_tag::self_closing, SLEN, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, SVG, TABLE, hubbub_token::tag, TITLE, TT, type, hubbub_token::type, U, UL, and VAR.

Referenced by hubbub_treebuilder_token_handler().

◆ handle_in_frameset()

hubbub_error handle_in_frameset ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_head()

hubbub_error handle_in_head ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

Handle token in "in head" insertion mode.

Parameters
treebuilderThe treebuilder instance
tokenThe token to handle
Returns
True to reprocess token, false otherwise
Todo:
parse error
Todo:
ack sc flag
Todo:
need to ensure that the client callback sets the parser-inserted/already-executed script flags.
Todo:
parse error
Todo:
parse error

Definition at line 109 of file in_head.c.

References AFTER_HEAD, BASE, BODY, BR, COMMAND, hubbub_treebuilder::context, hubbub_tree_handler::ctx, hubbub_treebuilder_context::current_node, hubbub_token::data, hubbub_treebuilder_context::element_stack, element_stack_pop(), element_type_from_name(), hubbub_treebuilder_context::enable_scripting, handle_in_body(), HEAD, HTML, HUBBUB_OK, HUBBUB_REPROCESS, HUBBUB_TOKEN_CHARACTER, HUBBUB_TOKEN_COMMENT, HUBBUB_TOKEN_DOCTYPE, HUBBUB_TOKEN_END_TAG, HUBBUB_TOKEN_EOF, HUBBUB_TOKEN_START_TAG, IN_HEAD_NOSCRIPT, insert_element(), LINK, META, hubbub_treebuilder_context::mode, hubbub_tag::name, element_context::node, NOFRAMES, NOSCRIPT, parse_generic_rcdata(), process_characters_expect_whitespace(), process_comment_append(), process_meta_in_head(), SCRIPT, STYLE, hubbub_token::tag, TITLE, hubbub_treebuilder::tree_handler, type, hubbub_token::type, and hubbub_tree_handler::unref_node.

Referenced by handle_after_after_frameset(), handle_after_frameset(), handle_after_head(), handle_in_frameset(), handle_in_head_noscript(), handle_in_select(), handle_in_table(), hubbub_treebuilder_token_handler(), and process_start_tag().

◆ handle_in_head_noscript()

hubbub_error handle_in_head_noscript ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_row()

hubbub_error handle_in_row ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_select()

hubbub_error handle_in_select ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_in_select_in_table()

hubbub_error handle_in_select_in_table ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

Handle token in "in select in table" insertion mode.

Parameters
treebuilderThe treebuilder instance
tokenThe token to handle
Returns
True to reprocess token, false otherwise
Todo:
parse error
Todo:
fragment case

Definition at line 24 of file in_select_in_table.c.

References CAPTION, hubbub_token::data, element_in_scope(), element_stack_pop_until(), element_type_from_name(), handle_in_select(), HUBBUB_OK, HUBBUB_REPROCESS, HUBBUB_TOKEN_END_TAG, HUBBUB_TOKEN_START_TAG, hubbub_tag::name, reset_insertion_mode(), SELECT, TABLE, hubbub_token::tag, TBODY, TD, TFOOT, TH, THEAD, TR, type, and hubbub_token::type.

Referenced by hubbub_treebuilder_token_handler().

◆ handle_in_table()

hubbub_error handle_in_table ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

Handle token in "in table" insertion mode.

Parameters
treebuilderThe treebuilder instance
tokenThe token to handle
Returns
True to reprocess token, false otherwise
Todo:
parse error
Todo:
parse error
Todo:
fragment case
Todo:
parse error
Todo:
parse error

Definition at line 74 of file in_table.c.

References hubbub_tag::attributes, BODY, CAPTION, clear_stack_table_context(), COL, COLGROUP, hubbub_treebuilder::context, hubbub_tree_handler::ctx, hubbub_treebuilder_context::current_node, current_table(), hubbub_token::data, hubbub_treebuilder_context::element_stack, element_stack_pop_until(), element_type_from_name(), formatting_list_append(), hubbub_treebuilder_context::formatting_list_end, formatting_list_remove(), handle_in_body(), handle_in_head(), HTML, HUBBUB_OK, HUBBUB_REPROCESS, HUBBUB_TOKEN_CHARACTER, HUBBUB_TOKEN_COMMENT, HUBBUB_TOKEN_DOCTYPE, HUBBUB_TOKEN_END_TAG, HUBBUB_TOKEN_EOF, HUBBUB_TOKEN_START_TAG, IN_CAPTION, IN_COLUMN_GROUP, IN_TABLE_BODY, hubbub_treebuilder_context::in_table_foster, INPUT, insert_element(), hubbub_string::len, hubbub_treebuilder_context::mode, hubbub_tag::n_attributes, hubbub_tag::name, element_context::node, hubbub_tag::ns, process_characters_expect_whitespace(), process_comment_append(), process_input_in_table(), hubbub_string::ptr, hubbub_tree_handler::ref_node, reset_insertion_mode(), SCRIPT, SLEN, STYLE, TABLE, hubbub_token::tag, element_context::tainted, TBODY, TD, TFOOT, TH, THEAD, TR, hubbub_treebuilder::tree_handler, type, hubbub_token::type, and hubbub_tree_handler::unref_node.

Referenced by handle_in_row(), handle_in_table_body(), and hubbub_treebuilder_token_handler().

◆ handle_in_table_body()

hubbub_error handle_in_table_body ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_initial()

hubbub_error handle_initial ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)

◆ handle_script_collect_characters()

hubbub_error handle_script_collect_characters ( hubbub_treebuilder treebuilder,
const hubbub_token token 
)