Skip to content

Commit

Permalink
Merge pull request #119 from Overbryd/feat/node-is-void-element
Browse files Browse the repository at this point in the history
add check to see if we are dealing with a void element
  • Loading branch information
lexborisov authored Sep 7, 2017
2 parents 2c01d7b + 697d2aa commit 5255a7b
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 0 deletions.
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

0 comments on commit 5255a7b

Please sign in to comment.