Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add check to see if we are dealing with a void element #119

Merged
merged 1 commit into from
Sep 7, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions include/myhtml/api.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down
1 change: 1 addition & 0 deletions include/myhtml/myhtml.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
10 changes: 10 additions & 0 deletions source/myhtml/api.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down
31 changes: 31 additions & 0 deletions source/myhtml/myhtml.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions source/myhtml/myhtml.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down