Hubbub
Todo List
globalScope> Global aa_find_and_validate_formatting_element (hubbub_treebuilder *treebuilder, element_type type, formatting_list_entry **element)

parse error

parse error

parse error

globalScope> Global act_as_if_end_tag_tr (hubbub_treebuilder *treebuilder)
fragment case
globalScope> Global close_cell (hubbub_treebuilder *treebuilder)
parse error
globalScope> Global element_stack_pop (hubbub_treebuilder *treebuilder, hubbub_ns *ns, element_type *type, void **node)

Can we optimise this? (i.e. by not traversing the entire list)

reduce allocated stack size once there's enough free

globalScope> Global element_type_from_name (hubbub_treebuilder *treebuilder, const hubbub_string *tag_name)
optimise this
globalScope> Global foreign_break_out (hubbub_treebuilder *treebuilder)
parse error
globalScope> Global handle_after_after_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

globalScope> Global handle_after_after_frameset (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

globalScope> Global handle_after_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

fragment case

parse error

parse error

globalScope> Global handle_after_frameset (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

parse error

fragment case

parse error

parse error

globalScope> Global handle_after_head (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

parse error

parse error

globalScope> Global handle_before_head (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

globalScope> Global handle_before_html (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

cache selection algorithm

globalScope> Global handle_generic_rcdata (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

if the current node's a script, mark it as already executed

parse error

globalScope> Global handle_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

globalScope> Global handle_in_caption (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error if type == TABLE

parse error

fragment case

parse error

globalScope> Global handle_in_cell (hubbub_treebuilder *treebuilder, const hubbub_token *token)

fragment case

parse error

parse error

parse error

parse error

globalScope> Global handle_in_column_group (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

ack sc flag

fragment case

parse error

fragment case

globalScope> Global handle_in_foreign_content (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

ack sc flag

globalScope> Global handle_in_frameset (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

ack sc flag

parse error

parse error

parse error

parse error

globalScope> Global handle_in_head (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

ack sc flag

need to ensure that the client callback sets the parser-inserted/already-executed script flags.

parse error

parse error

globalScope> Global handle_in_head_noscript (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

parse error

parse error

parse error

parse error

globalScope> Global handle_in_row (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global handle_in_select (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

parse error

parse error

parse error

parse error

globalScope> Global handle_in_select_in_table (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

fragment case

globalScope> Global handle_in_table (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

fragment case

parse error

parse error

globalScope> Global handle_in_table_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

parse error

globalScope> Global handle_initial (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

parse error

parse error

globalScope> Global hubbub_charset_extract (const uint8_t *data, size_t len, uint16_t *mibenum, uint32_t *source)

We probably want to wait for ~512 bytes of data / 500ms here

Charset autodetection

globalScope> Global hubbub_tokeniser_handle_after_attribute_name (hubbub_tokeniser *tokeniser)
parse error
globalScope> Global hubbub_tokeniser_handle_after_attribute_value_q (hubbub_tokeniser *tokeniser)
parse error
globalScope> Global hubbub_tokeniser_handle_attribute_value_uq (hubbub_tokeniser *tokeniser)
parse error
globalScope> Global hubbub_tokeniser_handle_before_attribute_name (hubbub_tokeniser *tokeniser)
parse error
globalScope> Global hubbub_tokeniser_handle_before_attribute_value (hubbub_tokeniser *tokeniser)

parse error

parse error

parse error

globalScope> Global hubbub_tokeniser_handle_before_doctype_name (hubbub_tokeniser *tokeniser)

parse error

parse error

globalScope> Global hubbub_tokeniser_handle_close_tag_open (hubbub_tokeniser *tokeniser)

fragment case

parse error

parse error

parse error

globalScope> Global hubbub_tokeniser_handle_comment (hubbub_tokeniser *tokeniser)
parse error if state != COMMENT_END
globalScope> Global hubbub_tokeniser_handle_tag_open (hubbub_tokeniser *tokeniser)

parse error

parse error

globalScope> Global LABEL
Enumerate phrasing elements
globalScope> Global process_0applet_button_marquee_object_in_body (hubbub_treebuilder *treebuilder, element_type type)

parse error

parse error

globalScope> Global process_0body_in_body (hubbub_treebuilder *treebuilder)

parse error

parse error

globalScope> Global process_0br_in_body (hubbub_treebuilder *treebuilder)
parse error
globalScope> Global process_0container_in_body (hubbub_treebuilder *treebuilder, element_type type)

parse error

parse error

globalScope> Global process_0dd_dt_li_in_body (hubbub_treebuilder *treebuilder, element_type type)

parse error

parse error

globalScope> Global process_0form_in_body (hubbub_treebuilder *treebuilder)

parse error

parse error

globalScope> Global process_0generic_in_body (hubbub_treebuilder *treebuilder, element_type type)

parse error

parse error

globalScope> Global process_0h_in_body (hubbub_treebuilder *treebuilder, element_type type)

optimise this

parse error

parse error

globalScope> Global process_0p_in_body (hubbub_treebuilder *treebuilder)
parse error
globalScope> Global process_a_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_body_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_button_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_dd_dt_li_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token, element_type type)
parse error
globalScope> Global process_end_tag (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_form_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_frameset_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_hN_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_html_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_input_in_table (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_isindex_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)

parse error

Localisation

globalScope> Global process_meta_in_head (hubbub_treebuilder *treebuilder, const hubbub_token *token)
ack sc flag
globalScope> Global process_nobr_in_body (hubbub_treebuilder *treebuilder, const hubbub_token *token)
parse error
globalScope> Global process_start_tag (hubbub_treebuilder *treebuilder, const hubbub_token *token)

ruby

ack sc flag

parse error

globalScope> Global reset_insertion_mode (hubbub_treebuilder *treebuilder)
fragment parsing algorithm
globalScope> Global START_BUF (str, cptr, length)

make some of these inline functions (type-safety)

document them properly here

globalScope> Global table_sub_start_or_table_end (hubbub_treebuilder *treebuilder)
parse error