diff options
author | Andrew Sidwell <andy@entai.co.uk> | 2008-07-03 13:04:22 +0000 |
---|---|---|
committer | Andrew Sidwell <andy@entai.co.uk> | 2008-07-03 13:04:22 +0000 |
commit | 0bff00b4408d7296d1e5e940d8a5fd910c9fb283 (patch) | |
tree | d96d096d0541daa61ee946471bb82a58eba8f9bb /src | |
parent | 95a5f32cd305571579109fea002b47701e76f82e (diff) | |
download | libhubbub-0bff00b4408d7296d1e5e940d8a5fd910c9fb283.tar.gz libhubbub-0bff00b4408d7296d1e5e940d8a5fd910c9fb283.tar.bz2 |
Get all the treebuilder actually linking together nicely.
svn path=/trunk/hubbub/; revision=4501
Diffstat (limited to 'src')
-rw-r--r-- | src/treebuilder/after_after_frameset.c | 4 | ||||
-rw-r--r-- | src/treebuilder/in_cell.c | 6 | ||||
-rw-r--r-- | src/treebuilder/in_row.c | 6 | ||||
-rw-r--r-- | src/treebuilder/in_select_in_table.c | 2 | ||||
-rw-r--r-- | src/treebuilder/in_table_body.c | 8 | ||||
-rw-r--r-- | src/treebuilder/modes.h | 4 | ||||
-rw-r--r-- | src/treebuilder/treebuilder.c | 40 |
7 files changed, 55 insertions, 15 deletions
diff --git a/src/treebuilder/after_after_frameset.c b/src/treebuilder/after_after_frameset.c index b320a05..6227825 100644 --- a/src/treebuilder/after_after_frameset.c +++ b/src/treebuilder/after_after_frameset.c @@ -15,13 +15,13 @@ /** - * Handle token in "after after body" insertion mode + * Handle token in "after after frameset" insertion mode * * \param treebuilder The treebuilder instance * \param token The token to handle * \return True to reprocess token, false otherwise */ -bool handle_after_after_body(hubbub_treebuilder *treebuilder, +bool handle_after_after_frameset(hubbub_treebuilder *treebuilder, const hubbub_token *token) { bool reprocess = false; diff --git a/src/treebuilder/in_cell.c b/src/treebuilder/in_cell.c index cf1c7a9..f44d6ae 100644 --- a/src/treebuilder/in_cell.c +++ b/src/treebuilder/in_cell.c @@ -78,7 +78,7 @@ bool handle_in_cell(hubbub_treebuilder *treebuilder, const hubbub_token *token) close_cell(treebuilder); reprocess = true; } else { - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); } } break; @@ -122,7 +122,7 @@ bool handle_in_cell(hubbub_treebuilder *treebuilder, const hubbub_token *token) /** \todo parse error */ } } else { - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); } } break; @@ -130,7 +130,7 @@ bool handle_in_cell(hubbub_treebuilder *treebuilder, const hubbub_token *token) case HUBBUB_TOKEN_COMMENT: case HUBBUB_TOKEN_DOCTYPE: case HUBBUB_TOKEN_EOF: - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); break; } diff --git a/src/treebuilder/in_row.c b/src/treebuilder/in_row.c index 688865a..37c4b9d 100644 --- a/src/treebuilder/in_row.c +++ b/src/treebuilder/in_row.c @@ -101,7 +101,7 @@ bool handle_in_row(hubbub_treebuilder *treebuilder, type == TFOOT || type == THEAD || type == TR) { reprocess = act_as_if_end_tag_tr(treebuilder); } else { - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); } } break; @@ -120,7 +120,7 @@ bool handle_in_row(hubbub_treebuilder *treebuilder, /** \todo parse error */ /* Ignore the token */ } else { - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); } } break; @@ -128,7 +128,7 @@ bool handle_in_row(hubbub_treebuilder *treebuilder, case HUBBUB_TOKEN_COMMENT: case HUBBUB_TOKEN_DOCTYPE: case HUBBUB_TOKEN_EOF: - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); break; } diff --git a/src/treebuilder/in_select_in_table.c b/src/treebuilder/in_select_in_table.c index 42a2a1b..dabb0ff 100644 --- a/src/treebuilder/in_select_in_table.c +++ b/src/treebuilder/in_select_in_table.c @@ -53,7 +53,7 @@ bool handle_in_select_in_table(hubbub_treebuilder *treebuilder, } if (!handled) { - reprocess = process_in_select(treebuilder, token); + reprocess = handle_in_select(treebuilder, token); } return reprocess; diff --git a/src/treebuilder/in_table_body.c b/src/treebuilder/in_table_body.c index f291b7c..6e151bd 100644 --- a/src/treebuilder/in_table_body.c +++ b/src/treebuilder/in_table_body.c @@ -77,7 +77,7 @@ static bool table_sub_start_or_table_end(hubbub_treebuilder *treebuilder) /** - * Handle tokens in "in column group" insertion mode + * Handle tokens in "in table body" insertion mode * * Up to date with the spec as of 25 June 2008 * @@ -85,7 +85,7 @@ static bool table_sub_start_or_table_end(hubbub_treebuilder *treebuilder) * \param token The token to process * \return True to reprocess the token, false otherwise */ -bool handle_in_column_group(hubbub_treebuilder *treebuilder, +bool handle_in_table_body(hubbub_treebuilder *treebuilder, const hubbub_token *token) { bool reprocess = false; @@ -156,7 +156,7 @@ bool handle_in_column_group(hubbub_treebuilder *treebuilder, /** \todo parse error */ /* Ignore the token */ } else { - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); } } break; @@ -164,7 +164,7 @@ bool handle_in_column_group(hubbub_treebuilder *treebuilder, case HUBBUB_TOKEN_COMMENT: case HUBBUB_TOKEN_DOCTYPE: case HUBBUB_TOKEN_EOF: - reprocess = process_in_table(treebuilder, token); + reprocess = handle_in_table(treebuilder, token); break; } diff --git a/src/treebuilder/modes.h b/src/treebuilder/modes.h index ada817b..b1820d2 100644 --- a/src/treebuilder/modes.h +++ b/src/treebuilder/modes.h @@ -33,8 +33,8 @@ typedef enum IN_FRAMESET, AFTER_FRAMESET, AFTER_AFTER_BODY, - AFTER_AFTER_FRAMESET, + GENERIC_RCDATA, SCRIPT_COLLECT_CHARACTERS, } insertion_mode; @@ -85,6 +85,8 @@ bool handle_after_frameset(hubbub_treebuilder *treebuilder, const hubbub_token *token); bool handle_after_after_body(hubbub_treebuilder *treebuilder, const hubbub_token *token); +bool handle_after_after_frameset(hubbub_treebuilder *treebuilder, + const hubbub_token *token); bool process_in_head(hubbub_treebuilder *treebuilder, const hubbub_token *token); diff --git a/src/treebuilder/treebuilder.c b/src/treebuilder/treebuilder.c index 3c25540..2a6a3c1 100644 --- a/src/treebuilder/treebuilder.c +++ b/src/treebuilder/treebuilder.c @@ -327,20 +327,46 @@ void hubbub_treebuilder_token_handler(const hubbub_token *token, reprocess = handle_in_body(treebuilder, token); break; case IN_TABLE: + reprocess = handle_in_table(treebuilder, token); + break; case IN_CAPTION: + reprocess = handle_in_caption(treebuilder, token); + break; case IN_COLUMN_GROUP: + reprocess = handle_in_column_group(treebuilder, token); + break; case IN_TABLE_BODY: + reprocess = handle_in_table_body(treebuilder, token); + break; case IN_ROW: + reprocess = handle_in_row(treebuilder, token); + break; case IN_CELL: + reprocess = handle_in_cell(treebuilder, token); + break; case IN_SELECT: + reprocess = handle_in_select(treebuilder, token); + break; case IN_SELECT_IN_TABLE: + reprocess = handle_in_select_in_table(treebuilder, token); + break; case IN_FOREIGN_CONTENT: + reprocess = handle_in_foreign_content(treebuilder, token); + break; case AFTER_BODY: + reprocess = handle_after_body(treebuilder, token); + break; case IN_FRAMESET: + reprocess = handle_in_frameset(treebuilder, token); + break; case AFTER_FRAMESET: + reprocess = handle_after_frameset(treebuilder, token); + break; case AFTER_AFTER_BODY: + reprocess = handle_after_after_body(treebuilder, token); + break; case AFTER_AFTER_FRAMESET: - reprocess = false; + reprocess = handle_after_after_frameset(treebuilder, token); break; case GENERIC_RCDATA: reprocess = handle_generic_rcdata(treebuilder, token); @@ -1080,6 +1106,18 @@ element_type current_node(hubbub_treebuilder *treebuilder) } /** + * Peek at the top element of the element stack. + * + * \param treebuilder Treebuilder instance + * \return Element type on the top of the stack + */ +hubbub_ns current_node_ns(hubbub_treebuilder *treebuilder) +{ + return treebuilder->context.element_stack + [treebuilder->context.current_node].ns; +} + +/** * Peek at the element below the top of the element stack. * * \param treebuilder Treebuilder instance |