/**
* Name: html
* Description: Hypertext markup language HTML.
* Author: Markku Rossi
*/
state html_tag extends Highlight
{
/>/ {
language_print ($0);
return;
}
/\"/ {
keyword_face (false);
string_face (true);
language_print ($0);
call (c_string);
string_face (false);
keyword_face (true);
}
}
state html_entity extends Highlight
{
/;/ {
language_print ($0);
return;
}
}
state html_script_tag extends Highlight
{
/\"/ {
keyword_face (false);
string_face (true);
language_print ($0);
call (c_string);
string_face (false);
keyword_face (true);
}
/([lL][aA][nN][gG][uU][aA][gG][eE]=\")([^\"]*)(\")/ {
html_script_language = $2;
language_print ($1);
keyword_face (false);
string_face (true);
language_print ($2);
string_face (false);
keyword_face (true);
language_print ($3);
}
/>/ {
language_print ($0);
return;
}
}
state html_skip_script extends Highlight
{
/* Terminator for nested scripts. */
/<\/[sS][cC][rR][iI][pP][tT]>/ {
from_html_terminator = $0;
return;
}
}
state html extends HighlightEntry
{
BEGIN {
require_state (javascript);
}
/* Scripts. */
/<[sS][cC][rR][iI][pP][tT]/ {
keyword_face (true);
language_print ($0);
/* The default script language is JavaScript. */
html_script_language = "JavaScript";
call (html_script_tag);
keyword_face (false);
if (regmatch(html_script_language, /^javascript.*$/i))
{
/* A nested JavaScript block. */
from_html_terminator = "";
call (javascript_internal);
keyword_face (true);
language_print (from_html_terminator);
keyword_face (false);
}
else
{
/* An unknown scripting language, skip it. */
from_html_terminator = "";
call (html_skip_script);
keyword_face (true);
language_print (from_html_terminator);
keyword_face (false);
}
}
/ {
keyword_face (true);
language_print ($0);
call (html_tag);
keyword_face (false);
}
/&/ {
keyword_face (true);
language_print ($0);
call (html_entity);
keyword_face (false);
}
}
/*
Local variables:
mode: c
End:
*/