HTML-MyHTML
view release on metacpan or search on metacpan
source/myhtml/token.c view on Meta::CPAN
_myhtml_token_create_copy_srt(token, "\0", 1, &return_doctype->attr_system);
}
}
else {
if(return_doctype->attr_public)
myhtml_free(return_doctype->attr_public);
return_doctype->attr_public = NULL;
if(return_doctype->attr_system)
myhtml_free(return_doctype->attr_system);
return_doctype->attr_system = NULL;
}
}
else if(myhtml_strncasecmp(attr->value.data, "SYSTEM", attr->value.length) == 0)
{
attr = attr->next;
if(attr && attr->value.length) {
_myhtml_token_create_copy_srt(token, "\0", 1, &return_doctype->attr_public);
_myhtml_token_create_copy_srt(token, attr->value.data, attr->value.length, &return_doctype->attr_system);
}
else {
if(return_doctype->attr_public)
myhtml_free(return_doctype->attr_public);
return_doctype->attr_public = NULL;
if(return_doctype->attr_system)
myhtml_free(return_doctype->attr_system);
return_doctype->attr_system = NULL;
}
}
else {
if(return_doctype->attr_public)
myhtml_free(return_doctype->attr_public);
return_doctype->attr_public = NULL;
if(return_doctype->attr_system)
myhtml_free(return_doctype->attr_system);
return_doctype->attr_system = NULL;
}
}
}
bool myhtml_token_doctype_check_html_4_0(myhtml_tree_doctype_t* return_doctype)
{
return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.0//EN") &&
(return_doctype->attr_system == NULL || myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/REC-html40/strict.dtd"));
}
bool myhtml_token_doctype_check_html_4_01(myhtml_tree_doctype_t* return_doctype)
{
return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.01//EN") &&
(return_doctype->attr_system == NULL || myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/html4/strict.dtd"));
}
bool myhtml_token_doctype_check_xhtml_1_0(myhtml_tree_doctype_t* return_doctype)
{
if(return_doctype->attr_system == NULL)
return true;
return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.0 Strict//EN") &&
myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
}
bool myhtml_token_doctype_check_xhtml_1_1(myhtml_tree_doctype_t* return_doctype)
{
if(return_doctype->attr_system == NULL)
return true;
return myhtml_strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.1//EN") &&
myhtml_strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
}
bool myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_tree_doctype_t* return_doctype)
{
if(return_doctype == NULL)
return false;
myhtml_token_strict_doctype_by_token(token, target, return_doctype);
if(return_doctype->attr_name == NULL)
return false;
if((return_doctype->is_html ||
return_doctype->attr_public ||
(return_doctype->attr_system && myhtml_strcmp(return_doctype->attr_system, "about:legacy-compat"))))
{
if(return_doctype->attr_public == NULL)
return false;
if(return_doctype->is_html &&
myhtml_token_doctype_check_html_4_0(return_doctype) &&
myhtml_token_doctype_check_html_4_01(return_doctype) &&
myhtml_token_doctype_check_xhtml_1_0(return_doctype) &&
myhtml_token_doctype_check_xhtml_1_1(return_doctype))
{
return false;
}
}
return true;
}
void myhtml_token_adjust_svg_attributes(myhtml_token_node_t* target)
{
size_t count = sizeof(myhtml_token_attr_svg_replacement) / sizeof(myhtml_token_replacement_entry_t);
for (size_t i = 0; i < count; i++)
{
myhtml_token_attr_t* attr = myhtml_token_attr_by_name(target, myhtml_token_attr_svg_replacement[i].from,
myhtml_token_attr_svg_replacement[i].from_size);
if(attr) {
myhtml_string_clean(&attr->key);
myhtml_string_append(&attr->key, myhtml_token_attr_svg_replacement[i].to,
myhtml_token_attr_svg_replacement[i].to_size);
}
}
}
void myhtml_token_adjust_foreign_attributes(myhtml_token_node_t* target)
{
size_t count = sizeof(myhtml_token_attr_namespace_replacement) / sizeof(myhtml_token_namespace_replacement_t);
for (size_t i = 0; i < count; i++)
{
myhtml_token_attr_t* attr = myhtml_token_attr_by_name(target, myhtml_token_attr_namespace_replacement[i].from,
myhtml_token_attr_namespace_replacement[i].from_size);
if(attr) {
( run in 1.846 second using v1.01-cache-2.11-cpan-119454b85a5 )