summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Sidwell <andy@entai.co.uk>2008-07-03 13:04:22 +0000
committerAndrew Sidwell <andy@entai.co.uk>2008-07-03 13:04:22 +0000
commit0bff00b4408d7296d1e5e940d8a5fd910c9fb283 (patch)
treed96d096d0541daa61ee946471bb82a58eba8f9bb
parent95a5f32cd305571579109fea002b47701e76f82e (diff)
downloadlibhubbub-0bff00b4408d7296d1e5e940d8a5fd910c9fb283.tar.gz
libhubbub-0bff00b4408d7296d1e5e940d8a5fd910c9fb283.tar.bz2
Get all the treebuilder actually linking together nicely.
svn path=/trunk/hubbub/; revision=4501
-rw-r--r--src/treebuilder/after_after_frameset.c4
-rw-r--r--src/treebuilder/in_cell.c6
-rw-r--r--src/treebuilder/in_row.c6
-rw-r--r--src/treebuilder/in_select_in_table.c2
-rw-r--r--src/treebuilder/in_table_body.c8
-rw-r--r--src/treebuilder/modes.h4
-rw-r--r--src/treebuilder/treebuilder.c40
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