summaryrefslogtreecommitdiff
path: root/src/treebuilder/treebuilder.c
diff options
context:
space:
mode:
authorRupinder Singh Khokhar <rsk1coder99@gmail.com>2014-07-09 02:50:28 +0530
committerRupinder Singh Khokhar <rsk1coder99@gmail.com>2014-08-01 21:44:32 +0530
commitab7c03d1289a774f89d682183f0c6462effcf7aa (patch)
tree281edffb8730f3fa33c107fc4149b465aa0e37cb /src/treebuilder/treebuilder.c
parentf2b1200a40f6d7f79ae2702119598bbc304edbd4 (diff)
downloadlibhubbub-ab7c03d1289a774f89d682183f0c6462effcf7aa.tar.gz
libhubbub-ab7c03d1289a774f89d682183f0c6462effcf7aa.tar.bz2
fixed handlers of table related and select related elements
Diffstat (limited to 'src/treebuilder/treebuilder.c')
-rw-r--r--src/treebuilder/treebuilder.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/treebuilder/treebuilder.c b/src/treebuilder/treebuilder.c
index a1bc802..11ff2a2 100644
--- a/src/treebuilder/treebuilder.c
+++ b/src/treebuilder/treebuilder.c
@@ -48,6 +48,7 @@ static const struct {
{ S("hr"), HR }, { S("iframe"), IFRAME },
{ S("image"), IMAGE }, { S("img"), IMG },
{ S("input"), INPUT }, { S("isindex"), ISINDEX },
+ { S("keygen"), KEYGEN },
{ S("li"), LI }, { S("link"), LINK },
{ S("listing"), LISTING }, { S("main"), MAIN },
{ S("menu"), MENU }, { S("menuitem"), MENUITEM },
@@ -425,6 +426,48 @@ hubbub_error process_characters_expect_whitespace(
}
/**
+ * Process a character token in table text
+ *
+ * \param treebuilder The treebuilder instance
+ * \param token The character token
+ * \return HUBBUB_REPROCESS if the token needs reprocessing
+ * HUBBUB_OK if it contained only whitespace,
+ * appropriate error otherwise
+ */
+hubbub_error process_in_table_text(
+ hubbub_treebuilder *treebuilder,
+ const hubbub_token *token)
+{
+ const uint8_t *data = token->data.character.ptr;
+ size_t len = token->data.character.len;
+ size_t c;
+
+ for (c = 0; c < len; c++) {
+ if (data[c] != 0x09 && data[c] != 0x0A &&
+ data[c] != 0x0C && data[c] != 0x20)
+ break;
+ }
+
+ if (c == len) {
+ hubbub_error error;
+ hubbub_string temp;
+
+ temp.ptr = data;
+ temp.len = c;
+
+ error = append_text(treebuilder, &temp);
+ if (error != HUBBUB_OK)
+ return error;
+ }
+
+ /* Non-whitespace characters in token, so reprocess */
+ if (c != len) {
+ return HUBBUB_REPROCESS;
+ }
+
+ return HUBBUB_OK;
+}
+/**
* Process a comment token, appending it to the given parent
*
* \param treebuilder The treebuilder instance