]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/html.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / html.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <MODE>
6         <PROPS>
7                 <PROPERTY NAME="commentStart" VALUE="&lt;!--" />
8                 <PROPERTY NAME="commentEnd" VALUE="--&gt;" />
9         </PROPS>
10
11         <RULES IGNORE_CASE="TRUE">
12                 <!-- SGML comment -->
13                 <SPAN TYPE="COMMENT1">
14                         <BEGIN>&lt;!--</BEGIN>
15                         <END>--&gt;</END>
16                 </SPAN>
17
18                 <!-- JavaScript -->
19                 <SPAN_REGEXP TYPE="MARKUP" DELEGATE="JAVASCRIPT" HASH_CHAR="&lt;">
20                         <BEGIN>&lt;(?=SCRIPT\b)</BEGIN>
21                         <END REGEXP="TRUE">(?i)(?=&lt;/SCRIPT\b)</END>
22                 </SPAN_REGEXP>
23
24                 <!-- stylesheet -->
25                 <SPAN_REGEXP TYPE="MARKUP" DELEGATE="CSS" HASH_CHAR="&lt;">
26                         <BEGIN>&lt;(?=STYLE\b)</BEGIN>
27                         <END REGEXP="TRUE">(?i)(?=&lt;/STYLE\b)</END>
28                 </SPAN_REGEXP>
29
30                 <!-- DTD instructions -->
31                 <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
32                         <BEGIN>&lt;!</BEGIN>
33                         <END>&gt;</END>
34                 </SPAN>
35
36                 <!-- markup tags -->
37                 <SPAN TYPE="MARKUP" DELEGATE="TAGS">
38                         <BEGIN>&lt;</BEGIN>
39                         <END>&gt;</END>
40                 </SPAN>
41
42                 <!-- SGML character entities -->
43                 <IMPORT DELEGATE="CHARACTER_ENTITIES" />
44         </RULES>
45
46         <RULES SET="TAGS" DEFAULT="MARKUP">
47                 <!-- Inline CSS -->
48                 <SPAN_REGEXP AT_WORD_START="TRUE" TYPE="MARKUP" DELEGATE="css::PROPERTIES" HASH_CHAR="style">
49                         <BEGIN>style\s*=\s*(["'])</BEGIN>
50                         <END>$1</END>
51                 </SPAN_REGEXP>
52
53                 <!-- Javascript: delegate on* attributes to Javascript mode -->
54                 <SPAN_REGEXP AT_WORD_START="TRUE" DELEGATE="javascript::MAIN" HASH_CHAR="on" TYPE="MARKUP">
55                         <BEGIN>on[a-z]+\s*=\s*(["'])</BEGIN>
56                         <END>$1</END>
57                 </SPAN_REGEXP>
58
59                 <!-- NOTE: no ESCAPE for quotes, at least for attributes; e.g onclick="alert(\"foo\");" is invalid! -->
60                 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
61                         <BEGIN>"</BEGIN>
62                         <END>"</END>
63                 </SPAN>
64                 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
65                         <BEGIN>'</BEGIN>
66                         <END>'</END>
67                 </SPAN>
68
69                 <SEQ TYPE="OPERATOR">=</SEQ>
70
71                 <KEYWORDS>
72                         <!-- HTML/XHTML elements, taken from http://de.selfhtml.org/html/referenz/elemente.htm -->
73                         <!-- updated to include html5 elements. Obsolete and deprecated elements
74                         are still here for backward compatibility. -->
75                         <KEYWORD1>a</KEYWORD1>
76                         <KEYWORD1>abbr</KEYWORD1>
77                         <KEYWORD1>acronym</KEYWORD1>
78                         <KEYWORD1>address</KEYWORD1>
79                         <KEYWORD1>applet</KEYWORD1>
80                         <KEYWORD1>area</KEYWORD1>
81                         <KEYWORD1>article</KEYWORD1>
82                         <KEYWORD1>aside</KEYWORD1>
83                         <KEYWORD1>audio</KEYWORD1>
84                         <KEYWORD1>b</KEYWORD1>
85                         <KEYWORD1>base</KEYWORD1>
86                         <KEYWORD1>basefont</KEYWORD1>
87                         <KEYWORD1>bdi</KEYWORD1>
88                         <KEYWORD1>bdo</KEYWORD1>
89                         <KEYWORD1>big</KEYWORD1>
90                         <KEYWORD1>blockquote</KEYWORD1>
91                         <KEYWORD1>body</KEYWORD1>
92                         <KEYWORD1>br</KEYWORD1>
93                         <KEYWORD1>button</KEYWORD1>
94                         <KEYWORD1>canvas</KEYWORD1>
95                         <KEYWORD1>caption</KEYWORD1>
96                         <KEYWORD1>center</KEYWORD1>
97                         <KEYWORD1>cite</KEYWORD1>
98                         <KEYWORD1>code</KEYWORD1>
99                         <KEYWORD1>col</KEYWORD1>
100                         <KEYWORD1>colgroup</KEYWORD1>
101                         <KEYWORD1>command</KEYWORD1>
102                         <KEYWORD1>data</KEYWORD1>
103                         <KEYWORD1>datalist</KEYWORD1>
104                         <KEYWORD1>dd</KEYWORD1>
105                         <KEYWORD1>del</KEYWORD1>
106                         <KEYWORD1>details</KEYWORD1>
107                         <KEYWORD1>dfn</KEYWORD1>
108                         <KEYWORD1>dir</KEYWORD1>
109                         <KEYWORD1>div</KEYWORD1>
110                         <KEYWORD1>dl</KEYWORD1>
111                         <KEYWORD1>dt</KEYWORD1>
112                         <KEYWORD1>em</KEYWORD1>
113                         <KEYWORD1>embed</KEYWORD1>
114                         <KEYWORD1>fieldset</KEYWORD1>
115                         <KEYWORD1>figcaption</KEYWORD1>
116                         <KEYWORD1>figure</KEYWORD1>
117                         <KEYWORD1>font</KEYWORD1>
118                         <KEYWORD1>footer</KEYWORD1>
119                         <KEYWORD1>form</KEYWORD1>
120                         <KEYWORD1>frame</KEYWORD1>
121                         <KEYWORD1>frameset</KEYWORD1>
122                         <KEYWORD1>h1</KEYWORD1>
123                         <KEYWORD1>h2</KEYWORD1>
124                         <KEYWORD1>h3</KEYWORD1>
125                         <KEYWORD1>h4</KEYWORD1>
126                         <KEYWORD1>h5</KEYWORD1>
127                         <KEYWORD1>h6</KEYWORD1>
128                         <KEYWORD1>head</KEYWORD1>
129                         <KEYWORD1>header</KEYWORD1>
130                         <KEYWORD1>hgroup</KEYWORD1>
131                         <KEYWORD1>hr</KEYWORD1>
132                         <KEYWORD1>html</KEYWORD1>
133                         <KEYWORD1>i</KEYWORD1>
134                         <KEYWORD1>iframe</KEYWORD1>
135                         <KEYWORD1>img</KEYWORD1>
136                         <KEYWORD1>input</KEYWORD1>
137                         <KEYWORD1>ins</KEYWORD1>
138                         <KEYWORD1>isindex</KEYWORD1>
139                         <KEYWORD1>kbd</KEYWORD1>
140                         <KEYWORD1>keygen</KEYWORD1>
141                         <KEYWORD1>label</KEYWORD1>
142                         <KEYWORD1>legend</KEYWORD1>
143                         <KEYWORD1>li</KEYWORD1>
144                         <KEYWORD1>link</KEYWORD1>
145                         <KEYWORD1>map</KEYWORD1>
146                         <KEYWORD1>mark</KEYWORD1>
147                         <KEYWORD1>menu</KEYWORD1>
148                         <KEYWORD1>meta</KEYWORD1>
149                         <KEYWORD1>meter</KEYWORD1>
150                         <KEYWORD1>nav</KEYWORD1>
151                         <KEYWORD1>noframes</KEYWORD1>
152                         <KEYWORD1>noscript</KEYWORD1>
153                         <KEYWORD1>object</KEYWORD1>
154                         <KEYWORD1>ol</KEYWORD1>
155                         <KEYWORD1>optgroup</KEYWORD1>
156                         <KEYWORD1>option</KEYWORD1>
157                         <KEYWORD1>output</KEYWORD1>
158                         <KEYWORD1>p</KEYWORD1>
159                         <KEYWORD1>param</KEYWORD1>
160                         <KEYWORD1>path</KEYWORD1>
161                         <KEYWORD1>pre</KEYWORD1>
162                         <KEYWORD1>progress</KEYWORD1>
163                         <KEYWORD1>q</KEYWORD1>
164                         <KEYWORD1>rp</KEYWORD1>
165                         <KEYWORD1>rt</KEYWORD1>
166                         <KEYWORD1>ruby</KEYWORD1>
167                         <KEYWORD1>s</KEYWORD1>
168                         <KEYWORD1>samp</KEYWORD1>
169                         <KEYWORD1>script</KEYWORD1>
170                         <KEYWORD1>section</KEYWORD1>
171                         <KEYWORD1>select</KEYWORD1>
172                         <KEYWORD1>small</KEYWORD1>
173                         <KEYWORD1>source</KEYWORD1>
174                         <KEYWORD1>span</KEYWORD1>
175                         <KEYWORD1>strike</KEYWORD1>
176                         <KEYWORD1>strong</KEYWORD1>
177                         <KEYWORD1>style</KEYWORD1>
178                         <KEYWORD1>sub</KEYWORD1>
179                         <KEYWORD1>summary</KEYWORD1>
180                         <KEYWORD1>sup</KEYWORD1>
181                         <KEYWORD1>svg</KEYWORD1>
182                         <KEYWORD1>table</KEYWORD1>
183                         <KEYWORD1>tbody</KEYWORD1>
184                         <KEYWORD1>td</KEYWORD1>
185                         <KEYWORD1>textarea</KEYWORD1>
186                         <KEYWORD1>tfoot</KEYWORD1>
187                         <KEYWORD1>th</KEYWORD1>
188                         <KEYWORD1>thead</KEYWORD1>
189                         <KEYWORD1>time</KEYWORD1>
190                         <KEYWORD1>title</KEYWORD1>
191                         <KEYWORD1>tr</KEYWORD1>
192                         <KEYWORD1>track</KEYWORD1>
193                         <KEYWORD1>tt</KEYWORD1>
194                         <KEYWORD1>u</KEYWORD1>
195                         <KEYWORD1>ul</KEYWORD1>
196                         <KEYWORD1>var</KEYWORD1>
197                         <KEYWORD1>video</KEYWORD1>
198                         <KEYWORD1>wbr</KEYWORD1>
199                 </KEYWORDS>
200         </RULES>
201
202         <!-- SCRIPT tag: Highlight tag and switch to language ruleset. -->
203         <RULES SET="JAVASCRIPT" DEFAULT="MARKUP">
204                 <!--If the content of the TYPE attribute is recognized, switch to
205                         language specific ruleset. -->
206                 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="COFFEESCRIPT_TAG"
207                                         HASH_CHAR="type">type(?=\s*=\s*['"]?text/coffeescript)</SEQ_REGEXP>
208                 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="VBSCRIPT_TAG"
209                                         HASH_CHAR="type">type(?=\s*=\s*['"]?text/vbscript)</SEQ_REGEXP>
210                 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="VBSCRIPT_TAG"
211                                         HASH_CHAR="language">language(?=\s*=\s*['"]?vbscript)</SEQ_REGEXP>
212                 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="PYTHON_SCRIPT_TAG"
213                                         HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/python)</SEQ_REGEXP>
214                 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="RUBY_SCRIPT_TAG"
215                                         HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/ruby)</SEQ_REGEXP>
216                 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="XML_SCRIPT_TAG"
217                                         HASH_CHAR="type">type(?=\s*=\s*['"]?application/xml)</SEQ_REGEXP>
218                 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="XQUERY_SCRIPT_TAG"
219                                         HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/xquery)</SEQ_REGEXP>
220                 <!-- Switch to JavaScript ruleset after the tag. -->
221                 <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">&gt;</SEQ>
222                 <!-- Import rules for highlighting. -->
223                 <IMPORT DELEGATE="TAGS"/>
224         </RULES>
225
226         <!-- CoffeeScript -->
227         <RULES SET="COFFEESCRIPT_TAG" DEFAULT="MARKUP">
228                 <SEQ TYPE="MARKUP" DELEGATE="coffeescript::MAIN">&gt;</SEQ>
229                 <IMPORT DELEGATE="TAGS"/>
230         </RULES>
231
232         <!-- Python - provided by Gestalt -->
233         <RULES SET="PYTHON_SCRIPT_TAG" DEFAULT="MARKUP">
234                 <SEQ TYPE="MARKUP" DELEGATE="python::MAIN">&gt;</SEQ>
235                 <IMPORT DELEGATE="TAGS"/>
236         </RULES>
237
238         <!-- Ruby - provided by Gestalt -->
239         <RULES SET="RUBY_SCRIPT_TAG" DEFAULT="MARKUP">
240                 <SEQ TYPE="MARKUP" DELEGATE="ruby::MAIN">&gt;</SEQ>
241                 <IMPORT DELEGATE="TAGS"/>
242         </RULES>
243
244         <!-- VBScript - provided by Internet Explorer -->
245         <RULES SET="VBSCRIPT_TAG" DEFAULT="MARKUP">
246                 <SEQ TYPE="MARKUP" DELEGATE="vbscript::MAIN">&gt;</SEQ>
247                 <IMPORT DELEGATE="TAGS"/>
248         </RULES>
249
250         <!-- XML - for XAML, provided by Gestalt -->
251         <RULES SET="XML_SCRIPT_TAG" DEFAULT="MARKUP">
252                 <SEQ TYPE="MARKUP" DELEGATE="xml::MAIN">&gt;</SEQ>
253                 <IMPORT DELEGATE="TAGS"/>
254         </RULES>
255
256         <!-- XQUERY - provided by XQIB -->
257         <RULES SET="XQUERY_SCRIPT_TAG" DEFAULT="MARKUP">
258                 <SEQ TYPE="MARKUP" DELEGATE="xq::MAIN">&gt;</SEQ>
259                 <IMPORT DELEGATE="TAGS"/>
260         </RULES>
261
262         <!-- STYLE tag: Highlight tag and delegate to CSS mode. -->
263         <RULES SET="CSS" DEFAULT="MARKUP">
264                 <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">&gt;</SEQ>
265                 <IMPORT DELEGATE="TAGS"/>
266         </RULES>
267
268         <RULES SET="ATTRIBUTE" DEFAULT="LITERAL1">
269                 <IMPORT DELEGATE="CHARACTER_ENTITIES" />
270         </RULES>
271
272         <!-- SGML character entities - to be used with IMPORT tag -->
273         <RULES SET="CHARACTER_ENTITIES">
274                 <SEQ_REGEXP TYPE="LITERAL2"
275                                         HASH_CHAR="&amp;">&amp;(#\d+|#x\p{XDigit}+|\p{Alnum}+);</SEQ_REGEXP>
276                 <SEQ TYPE="INVALID">&amp;</SEQ>
277         </RULES>
278 </MODE>