<?xml version="1.0"?>

<!DOCTYPE MODE SYSTEM "xmode.dtd">

<MODE>
	<PROPS>
		<PROPERTY NAME="commentStart" VALUE="#*" />
		<PROPERTY NAME="commentEnd" VALUE="*#" />
		<PROPERTY NAME="lineComment" VALUE="##" />
		<!-- Auto indent -->
		<PROPERTY NAME="indentNextLines" VALUE="^\s*(#(foreach|if|elseif|else))\s*\(.*\)\s*"/>
		<PROPERTY NAME="unindentThisLine" VALUE="^\s*#(end|elseif|else)\b.*"/>
	</PROPS>
	<RULES IGNORE_CASE="TRUE">
		<!-- SGML comment -->
		<SPAN TYPE="COMMENT1">
			<BEGIN>&lt;!--</BEGIN>
			<END>--&gt;</END>
		</SPAN>

		<!-- JavaScript -->
		<SPAN TYPE="MARKUP" DELEGATE="JAVASCRIPT">
			<BEGIN>&lt;SCRIPT</BEGIN>
			<END>&lt;/SCRIPT&gt;</END>
		</SPAN>

		<!-- stylesheet -->
		<SPAN TYPE="MARKUP" DELEGATE="CSS">
			<BEGIN>&lt;STYLE</BEGIN>
			<END>&lt;/STYLE&gt;</END>
		</SPAN>

		<!-- DTD instructions -->
		<SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
			<BEGIN>&lt;!</BEGIN>
			<END>&gt;</END>
		</SPAN>

		<!-- markup tags -->
		<SPAN TYPE="MARKUP" DELEGATE="html::TAGS">
			<BEGIN>&lt;</BEGIN>
			<END>&gt;</END>
		</SPAN>

		<!-- SGML entities -->
		<SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">
			<BEGIN>&amp;</BEGIN>
			<END>;</END>
		</SPAN>
		<IMPORT DELEGATE="VELOCITY" />
	</RULES>

	<RULES SET="VELOCITY">
		<SPAN TYPE="COMMENT2">
			<BEGIN>#*</BEGIN>
			<END>*#</END>
		</SPAN>

		<EOL_SPAN TYPE="COMMENT3">##</EOL_SPAN>

		<SPAN TYPE="KEYWORD3" NO_LINE_BREAK="TRUE">
			<BEGIN>${</BEGIN>
			<END>}</END>
		</SPAN>

		<SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD3"
			>\$!?[A-z][A-z0-9._-]*</SEQ_REGEXP>

		<KEYWORDS>
			<KEYWORD1>#set</KEYWORD1>
			<KEYWORD1>#foreach</KEYWORD1>
			<KEYWORD1>#end</KEYWORD1>
			<KEYWORD1>#if</KEYWORD1>
			<KEYWORD1>#else</KEYWORD1>
			<KEYWORD1>#elseif</KEYWORD1>
			<KEYWORD1>#parse</KEYWORD1>
			<KEYWORD1>#macro</KEYWORD1>
			<KEYWORD1>#stop</KEYWORD1>
			<KEYWORD1>#include</KEYWORD1>
		</KEYWORDS>
	</RULES>

	<RULES SET="JAVASCRIPT" DEFAULT="MARKUP" IGNORE_CASE="TRUE">
		<SEQ TYPE="MARKUP" DELEGATE="JAVASCRIPT2">&gt;</SEQ>
		<!-- handle <SCRIPT SRC="..."> properly -->
		<SEQ TYPE="MARKUP" DELEGATE="BACK_TO_HTML">SRC=</SEQ>
	</RULES>

	<RULES SET="JAVASCRIPT2"
		IGNORE_CASE="FALSE"
		HIGHLIGHT_DIGITS="TRUE"
		DIGIT_RE="(0x[\p{XDigit}]+[lL]?|[\p{Digit}]+(e[\p{Digit}]*)?[lLdDfF]?)">

		<IMPORT DELEGATE="VELOCITY" />
		<IMPORT DELEGATE="javascript::MAIN" />
	</RULES>

	<RULES SET="BACK_TO_HTML" DEFAULT="MARKUP">
		<SEQ TYPE="MARKUP" DELEGATE="MAIN">&gt;</SEQ>
	</RULES>

	<RULES SET="CSS" DEFAULT="MARKUP">
		<SEQ TYPE="MARKUP" DELEGATE="CSS2">&gt;</SEQ>
	</RULES>

	<RULES SET="CSS2"
		IGNORE_CASE="TRUE"
		HIGHLIGHT_DIGITS="TRUE"
		DIGIT_RE="[\p{Digit}]+(pt|pc|in|mm|cm|em|ex|px|ms|s|%)"
		NO_WORD_SEP="-_">

		<IMPORT DELEGATE="VELOCITY" />
		<IMPORT DELEGATE="css::MAIN" />
	</RULES>
</MODE>
