]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/zpt.xml
f962acff7284e865f6d4b6dcac9c9c70a8ba507d
[factor.git] / basis / xmode / modes / zpt.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \r
5 <!--\r
6 <MODE NAME="zpt"                        FILE="zpt.xml"\r
7                                 FILE_NAME_GLOB="*.{pt,zpt}"/>\r
8 -->\r
9 \r
10 <MODE>\r
11         <PROPS>\r
12                 <PROPERTY NAME="commentStart" VALUE="&lt;!--" />\r
13                 <PROPERTY NAME="commentEnd" VALUE="--&gt;" />\r
14         </PROPS>\r
15         <RULES IGNORE_CASE="TRUE">\r
16                 <!-- SGML comment -->\r
17                 <SPAN TYPE="COMMENT1">\r
18                         <BEGIN>&lt;!--</BEGIN>\r
19                         <END>--&gt;</END>\r
20                 </SPAN>\r
21 \r
22                 <!-- JavaScript -->\r
23                 <SPAN TYPE="MARKUP" DELEGATE="JAVASCRIPT">\r
24                         <BEGIN>&lt;SCRIPT</BEGIN>\r
25                         <END>&lt;/SCRIPT&gt;</END>\r
26                 </SPAN>\r
27 \r
28                 <!-- stylesheet -->\r
29                 <SPAN TYPE="MARKUP" DELEGATE="CSS">\r
30                         <BEGIN>&lt;STYLE</BEGIN>\r
31                         <END>&lt;/STYLE&gt;</END>\r
32                 </SPAN>\r
33 \r
34                 <!-- DTD instructions -->\r
35                 <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">\r
36                         <BEGIN>&lt;!</BEGIN>\r
37                         <END>&gt;</END>\r
38                 </SPAN>\r
39 \r
40                 <!-- markup tags -->\r
41                 <SPAN TYPE="MARKUP" DELEGATE="TAGS">\r
42                         <BEGIN>&lt;</BEGIN>\r
43                         <END>&gt;</END>\r
44                 </SPAN>\r
45 \r
46                 <!-- SGML entities -->\r
47                 <SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">\r
48                         <BEGIN>&amp;</BEGIN>\r
49                         <END>;</END>\r
50                 </SPAN>\r
51         </RULES>\r
52 \r
53         <!-- ESCAPE is not exactly right but it is needed to correctly\r
54              handle JavaScript in on* parameters -->\r
55         <RULES SET="TAGS" DEFAULT="MARKUP" ESCAPE="\">\r
56                 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">\r
57                         <BEGIN>"</BEGIN>\r
58                         <END>"</END>\r
59                 </SPAN>\r
60 \r
61                 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">\r
62                         <BEGIN>'</BEGIN>\r
63                         <END>'</END>\r
64                 </SPAN>\r
65 \r
66                 <SEQ TYPE="OPERATOR">=</SEQ>\r
67 \r
68                 <KEYWORDS>\r
69                         <!-- TAL -->\r
70                         <KEYWORD1>tal</KEYWORD1>\r
71                         <KEYWORD3>attributes</KEYWORD3>\r
72                         <KEYWORD3>define</KEYWORD3>\r
73                         <KEYWORD3>condition</KEYWORD3>\r
74                         <KEYWORD3>content</KEYWORD3>\r
75                         <KEYWORD3>omit-tag</KEYWORD3>\r
76                         <KEYWORD3>on-error</KEYWORD3>\r
77                         <KEYWORD3>repeat</KEYWORD3>\r
78                         <KEYWORD3>replace</KEYWORD3>\r
79 \r
80                         <!-- METAL -->\r
81                         <KEYWORD1>metal</KEYWORD1>\r
82                         <KEYWORD3>define-macro</KEYWORD3>\r
83                         <KEYWORD3>define-slot</KEYWORD3>\r
84                         <KEYWORD3>fill-slot</KEYWORD3>\r
85                         <KEYWORD3>use-macro</KEYWORD3>\r
86                 </KEYWORDS>\r
87         </RULES>\r
88 \r
89         <RULES SET="ATTRIBUTE" DEFAULT="LITERAL1">\r
90                 <SEQ TYPE="OPERATOR">:</SEQ>\r
91                 <SEQ TYPE="OPERATOR">;</SEQ>\r
92                 <SEQ TYPE="OPERATOR">?</SEQ>\r
93                 <SEQ TYPE="OPERATOR">|</SEQ>\r
94                 <SEQ TYPE="LITERAL2">$$</SEQ>\r
95 \r
96                 <SPAN TYPE="LITERAL4">\r
97                         <BEGIN>"</BEGIN>\r
98                         <END>"</END>\r
99                 </SPAN>\r
100 \r
101                 <SPAN TYPE="LITERAL4">\r
102                         <BEGIN>'</BEGIN>\r
103                         <END>'</END>\r
104                 </SPAN>\r
105 \r
106                 <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">\r
107                         <BEGIN>${</BEGIN>\r
108                         <END>}</END>\r
109                 </SPAN>\r
110                 <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>\r
111                 <!-- highligh python expressions -->\r
112                 <!--\r
113                 <SEQ TYPE="LITERAL2" DELEGATE="python::MAIN"\r
114                         AT_LINE_START="FALSE">python:</SEQ>\r
115                 -->\r
116                 <KEYWORDS>\r
117                         <!-- TALES expression types -->\r
118                         <KEYWORD4>exists</KEYWORD4>\r
119                         <KEYWORD4>nocall</KEYWORD4>\r
120                         <KEYWORD4>not</KEYWORD4>\r
121                         <KEYWORD4>path</KEYWORD4>\r
122                         <KEYWORD4>python</KEYWORD4>\r
123                         <KEYWORD4>string</KEYWORD4>\r
124                         <KEYWORD4>structure</KEYWORD4>\r
125 \r
126                         <!-- built-in TALES variables -->\r
127                         <!-- NOTE: root, here, container, template, \r
128                              request, user, and modules are optional -->\r
129                         <LITERAL3>CONTEXTS</LITERAL3>\r
130                         <LITERAL3>attrs</LITERAL3>\r
131                         <LITERAL3>container</LITERAL3>\r
132                         <LITERAL3>default</LITERAL3>\r
133                         <LITERAL3>here</LITERAL3>\r
134                         <LITERAL3>modules</LITERAL3>\r
135                         <LITERAL3>nothing</LITERAL3>\r
136                         <LITERAL3>options</LITERAL3>\r
137                         <LITERAL3>repeat</LITERAL3>\r
138                         <LITERAL3>request</LITERAL3>\r
139                         <LITERAL3>root</LITERAL3>\r
140                         <LITERAL3>template</LITERAL3>\r
141                         <LITERAL3>user</LITERAL3>\r
142 \r
143                         <!-- repeat variable attributes -->\r
144                         <LITERAL3>index</LITERAL3>\r
145                         <LITERAL3>number</LITERAL3>\r
146                         <LITERAL3>even</LITERAL3>\r
147                         <LITERAL3>odd</LITERAL3>\r
148                         <LITERAL3>start</LITERAL3>\r
149                         <LITERAL3>end</LITERAL3>\r
150                         <LITERAL3>first</LITERAL3>\r
151                         <LITERAL3>last</LITERAL3>\r
152                         <LITERAL3>length</LITERAL3>\r
153                         <LITERAL3>letter</LITERAL3>\r
154                         <LITERAL3>Letter</LITERAL3>\r
155                         <LITERAL3>roman</LITERAL3>\r
156                         <LITERAL3>Roman</LITERAL3>\r
157                 </KEYWORDS>\r
158         </RULES>\r
159 \r
160         <RULES SET="JAVASCRIPT" DEFAULT="MARKUP" IGNORE_CASE="TRUE">\r
161                 <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">&gt;</SEQ>\r
162                 <SEQ TYPE="MARKUP" DELEGATE="BACK_TO_HTML">SRC=</SEQ>\r
163         </RULES>\r
164 \r
165         <RULES SET="BACK_TO_HTML" DEFAULT="MARKUP">\r
166                 <SEQ TYPE="MARKUP" DELEGATE="zpt::MAIN">&gt;</SEQ>\r
167         </RULES>\r
168 \r
169         <RULES SET="CSS" DEFAULT="MARKUP">\r
170                 <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">&gt;</SEQ>\r
171         </RULES>\r
172 </MODE>\r
173 \r