From fc1f5d7ce70563b2c7612ab94bcb1eb12bdbb6d8 Mon Sep 17 00:00:00 2001 From: lexborisov Date: Thu, 7 Sep 2017 11:30:53 +0300 Subject: [PATCH] Sync myhtml module --- include/myhtml/api.h | 10 ++++++++++ include/myhtml/myhtml.h | 1 + source/myhtml/api.h | 10 ++++++++++ source/myhtml/myhtml.c | 31 +++++++++++++++++++++++++++++++ source/myhtml/myhtml.h | 1 + 5 files changed, 53 insertions(+) diff --git a/include/myhtml/api.h b/include/myhtml/api.h index 4017f2f..0c9981b 100755 --- a/include/myhtml/api.h +++ b/include/myhtml/api.h @@ -1315,6 +1315,16 @@ myhtml_node_tag_id(myhtml_tree_node_t *node); bool myhtml_node_is_close_self(myhtml_tree_node_t *node); +/** + * Node is a void element? + * + * @param[in] myhtml_tree_node_t* + * + * @return true or false (1 or 0) + */ +bool +myhtml_node_is_void_element(myhtml_tree_node_t *node); + /** * Get first attribute of a node * diff --git a/include/myhtml/myhtml.h b/include/myhtml/myhtml.h index d3babf7..35e2526 100644 --- a/include/myhtml/myhtml.h +++ b/include/myhtml/myhtml.h @@ -173,6 +173,7 @@ myhtml_tag_id_t myhtml_node_tag_id(myhtml_tree_node_t *node); const char * myhtml_tag_name_by_id(myhtml_tree_t* tree, myhtml_tag_id_t tag_id, size_t *length); myhtml_tag_id_t myhtml_tag_id_by_name(myhtml_tree_t* tree, const char *tag_name, size_t length); bool myhtml_node_is_close_self(myhtml_tree_node_t *node); +bool myhtml_node_is_void_element(myhtml_tree_node_t *node); myhtml_tree_attr_t * myhtml_node_attribute_first(myhtml_tree_node_t *node); myhtml_tree_attr_t * myhtml_node_attribute_last(myhtml_tree_node_t *node); const char * myhtml_node_text(myhtml_tree_node_t *node, size_t *length); diff --git a/source/myhtml/api.h b/source/myhtml/api.h index 4017f2f..0c9981b 100755 --- a/source/myhtml/api.h +++ b/source/myhtml/api.h @@ -1315,6 +1315,16 @@ myhtml_node_tag_id(myhtml_tree_node_t *node); bool myhtml_node_is_close_self(myhtml_tree_node_t *node); +/** + * Node is a void element? + * + * @param[in] myhtml_tree_node_t* + * + * @return true or false (1 or 0) + */ +bool +myhtml_node_is_void_element(myhtml_tree_node_t *node); + /** * Get first attribute of a node * diff --git a/source/myhtml/myhtml.c b/source/myhtml/myhtml.c index 00cd7a0..9ecac00 100644 --- a/source/myhtml/myhtml.c +++ b/source/myhtml/myhtml.c @@ -757,6 +757,37 @@ bool myhtml_node_is_close_self(myhtml_tree_node_t *node) return false; } +bool myhtml_node_is_void_element(myhtml_tree_node_t *node) +{ + // http://w3c.github.io/html-reference/syntax.html#void-elements + switch (node->tag_id) + { + case MyHTML_TAG_AREA: + case MyHTML_TAG_BASE: + case MyHTML_TAG_BR: + case MyHTML_TAG_COL: + case MyHTML_TAG_COMMAND: + case MyHTML_TAG_EMBED: + case MyHTML_TAG_HR: + case MyHTML_TAG_IMG: + case MyHTML_TAG_INPUT: + case MyHTML_TAG_KEYGEN: + case MyHTML_TAG_LINK: + case MyHTML_TAG_META: + case MyHTML_TAG_PARAM: + case MyHTML_TAG_SOURCE: + case MyHTML_TAG_TRACK: + case MyHTML_TAG_WBR: + { + return true; + } + default: + { + return false; + } + } +} + myhtml_tree_attr_t * myhtml_node_attribute_first(myhtml_tree_node_t *node) { if(node->token) diff --git a/source/myhtml/myhtml.h b/source/myhtml/myhtml.h index 5884643..e7208cc 100644 --- a/source/myhtml/myhtml.h +++ b/source/myhtml/myhtml.h @@ -173,6 +173,7 @@ myhtml_tag_id_t myhtml_node_tag_id(myhtml_tree_node_t *node); const char * myhtml_tag_name_by_id(myhtml_tree_t* tree, myhtml_tag_id_t tag_id, size_t *length); myhtml_tag_id_t myhtml_tag_id_by_name(myhtml_tree_t* tree, const char *tag_name, size_t length); bool myhtml_node_is_close_self(myhtml_tree_node_t *node); +bool myhtml_node_is_void_element(myhtml_tree_node_t *node); myhtml_tree_attr_t * myhtml_node_attribute_first(myhtml_tree_node_t *node); myhtml_tree_attr_t * myhtml_node_attribute_last(myhtml_tree_node_t *node); const char * myhtml_node_text(myhtml_tree_node_t *node, size_t *length);