1 <?xml version="1.0"?>
\r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
5 <!-- iCalendar mode by Victor Engmark <victor.engmark@gmail.com> -->
\r
9 <PROPERTY NAME="lineComment" VALUE="COMMENT"/>
\r
11 <PROPERTY NAME="wordBreakChars" VALUE=",;:=+/?^*&"/>
\r
13 <!-- Indentation -->
\r
14 <PROPERTY NAME="maxLineLen" VALUE="75"/>
\r
15 <PROPERTY NAME="wrap" VALUE="hard"/>
\r
16 <PROPERTY NAME="indentSize" VALUE="1"/>
\r
18 <!-- Use single space instead of tabs -->
\r
19 <PROPERTY NAME="noTabs" VALUE="1"/>
\r
20 <PROPERTY NAME="tabSize" VALUE="1"/>
\r
23 <!-- General rules -->
\r
24 <RULES IGNORE_CASE="FALSE">
\r
25 <SPAN AT_LINE_START="TRUE" DELEGATE="VCALENDAR" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
26 <BEGIN>BEGIN:VCALENDAR</BEGIN>
\r
27 <END>END:VCALENDAR</END>
\r
31 <!-- Entire calendar -->
\r
32 <RULES SET="VCALENDAR" IGNORE_CASE="FALSE">
\r
33 <!-- Time zone settings -->
\r
34 <SPAN AT_LINE_START="TRUE" DELEGATE="VTIMEZONE" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
35 <BEGIN>BEGIN:VTIMEZONE</BEGIN>
\r
36 <END>END:VTIMEZONE</END>
\r
40 <SPAN AT_LINE_START="TRUE" DELEGATE="VEVENT" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
41 <BEGIN>BEGIN:VEVENT</BEGIN>
\r
42 <END>END:VEVENT</END>
\r
45 <!-- TODO (treated like event for now) -->
\r
46 <SPAN AT_LINE_START="TRUE" DELEGATE="VEVENT" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
47 <BEGIN>BEGIN:VTODO</BEGIN>
\r
48 <END>END:VTODO</END>
\r
51 <!-- Journal (treated like event for now) -->
\r
52 <SPAN AT_LINE_START="TRUE" DELEGATE="VEVENT" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
53 <BEGIN>BEGIN:VJOURNAL</BEGIN>
\r
54 <END>END:VJOURNAL</END>
\r
58 <KEYWORD2>CALSCALE</KEYWORD2>
\r
59 <LITERAL2>GREGORIAN</LITERAL2>
\r
60 <KEYWORD2>METHOD</KEYWORD2>
\r
61 <KEYWORD2>PRODID</KEYWORD2>
\r
62 <KEYWORD2>VERSION</KEYWORD2>
\r
63 <LITERAL2>2.0</LITERAL2>
\r
67 <!-- Time zone settings -->
\r
68 <RULES SET="VTIMEZONE" IGNORE_CASE="FALSE">
\r
69 <!-- Daylight savings settings -->
\r
70 <SPAN AT_LINE_START="TRUE" DELEGATE="DAYLIGHT" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
71 <BEGIN>BEGIN:DAYLIGHT</BEGIN>
\r
72 <END>END:DAYLIGHT</END>
\r
75 <!-- Time zone standard settings -->
\r
76 <SPAN AT_LINE_START="TRUE" DELEGATE="STANDARD" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
77 <BEGIN>BEGIN:STANDARD</BEGIN>
\r
78 <END>END:STANDARD</END>
\r
81 <IMPORT DELEGATE="CUSTOM_KEYWORDS"/>
\r
84 <KEYWORD2>TZID</KEYWORD2>
\r
88 <!-- Daylight savings settings -->
\r
89 <RULES SET="DAYLIGHT" IGNORE_CASE="FALSE">
\r
90 <IMPORT DELEGATE="VCALENDAR_KEYWORDS"/>
\r
91 <IMPORT DELEGATE="VTIMEZONE_KEYWORDS"/>
\r
94 <!-- Time zone standard settings -->
\r
95 <RULES SET="STANDARD" IGNORE_CASE="FALSE">
\r
96 <IMPORT DELEGATE="VCALENDAR_KEYWORDS"/>
\r
97 <IMPORT DELEGATE="VTIMEZONE_KEYWORDS"/>
\r
101 <RULES SET="VEVENT" IGNORE_CASE="FALSE">
\r
103 <SPAN AT_LINE_START="TRUE" DELEGATE="VALARM" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1">
\r
104 <BEGIN>BEGIN:VALARM</BEGIN>
\r
105 <END>END:VALARM</END>
\r
108 <IMPORT DELEGATE="VCALENDAR_KEYWORDS"/>
\r
109 <IMPORT DELEGATE="CUSTOM_KEYWORDS"/>
\r
110 <IMPORT DELEGATE="VEVENT_KEYWORDS"/>
\r
113 <KEYWORD2>ATTENDEE</KEYWORD2>
\r
114 <KEYWORD2>CATEGORIES</KEYWORD2>
\r
115 <KEYWORD2>CLASS</KEYWORD2>
\r
116 <LITERAL2>CONFIDENTIAL</LITERAL2>
\r
117 <LITERAL2>PRIVATE</LITERAL2>
\r
118 <LITERAL2>PUBLIC</LITERAL2>
\r
119 <KEYWORD2>COMPLETED</KEYWORD2>
\r
120 <KEYWORD2>CREATED</KEYWORD2>
\r
121 <KEYWORD2>DESCRIPTION</KEYWORD2>
\r
122 <KEYWORD2>DTEND</KEYWORD2>
\r
123 <KEYWORD2>DTSTAMP</KEYWORD2>
\r
124 <KEYWORD2>DTSTART</KEYWORD2>
\r
125 <KEYWORD2>DUE</KEYWORD2>
\r
126 <KEYWORD2>LAST-MODIFIED</KEYWORD2>
\r
127 <KEYWORD2>LOCATION</KEYWORD2>
\r
128 <KEYWORD2>PERCENT-COMPLETE</KEYWORD2>
\r
129 <KEYWORD2>PRIORITY</KEYWORD2>
\r
130 <KEYWORD2>RECURRENCE-ID</KEYWORD2>
\r
131 <KEYWORD3>RSVP</KEYWORD3>
\r
132 <LITERAL3>FALSE</LITERAL3>
\r
133 <LITERAL3>TRUE</LITERAL3>
\r
134 <KEYWORD2>SEQUENCE</KEYWORD2>
\r
135 <KEYWORD2>STATUS</KEYWORD2>
\r
136 <KEYWORD2>SUMMARY</KEYWORD2>
\r
137 <KEYWORD2>TRANSP</KEYWORD2>
\r
138 <LITERAL2>OPAQUE</LITERAL2>
\r
139 <LITERAL2>TRANSPARENT</LITERAL2>
\r
140 <KEYWORD2>UID</KEYWORD2>
\r
141 <KEYWORD2>URL</KEYWORD2>
\r
142 <KEYWORD3>TZID</KEYWORD3>
\r
147 <RULES SET="VALARM" IGNORE_CASE="FALSE">
\r
148 <IMPORT DELEGATE="RIGHT"/>
\r
149 <IMPORT DELEGATE="CUSTOM_KEYWORDS"/>
\r
150 <IMPORT DELEGATE="VEVENT_KEYWORDS"/>
\r
153 <KEYWORD2>ACTION</KEYWORD2>
\r
154 <KEYWORD2>DESCRIPTION</KEYWORD2>
\r
155 <KEYWORD2>TRIGGER</KEYWORD2>
\r
159 <!-- Colon + right side text -->
\r
160 <RULES SET="RIGHT" IGNORE_CASE="FALSE">
\r
161 <EOL_SPAN AT_LINE_START="FALSE" MATCH_TYPE="OPERATOR" DELEGATE="RIGHT_TEXT">:</EOL_SPAN>
\r
164 <!-- Right side of the colon -->
\r
165 <RULES SET="RIGHT_TEXT" IGNORE_CASE="FALSE" DEFAULT="LITERAL4">
\r
168 <RULES SET="VCALENDAR_KEYWORDS" IGNORE_CASE="FALSE">
\r
170 <KEYWORD2>RRULE</KEYWORD2>
\r
171 <KEYWORD4>BYDAY</KEYWORD4>
\r
172 <KEYWORD4>BYMONTH</KEYWORD4>
\r
173 <KEYWORD4>FREQ</KEYWORD4>
\r
174 <KEYWORD4>INTERVAL</KEYWORD4>
\r
175 <LITERAL4>YEARLY</LITERAL4>
\r
179 <RULES SET="VTIMEZONE_KEYWORDS" IGNORE_CASE="FALSE">
\r
181 <KEYWORD2>DTSTART</KEYWORD2>
\r
182 <KEYWORD2>TZNAME</KEYWORD2>
\r
183 <KEYWORD2>TZOFFSETFROM</KEYWORD2>
\r
184 <KEYWORD2>TZOFFSETTO</KEYWORD2>
\r
188 <RULES SET="VEVENT_KEYWORDS" IGNORE_CASE="FALSE">
\r
190 <LITERAL2>CONFIRMED</LITERAL2>
\r
191 <LITERAL2>PRIVATE</LITERAL2>
\r
192 <KEYWORD3>VALUE</KEYWORD3>
\r
193 <LITERAL3>DATE</LITERAL3>
\r
194 <LITERAL3>DURATION</LITERAL3>
\r
198 <!-- Custom keywords -->
\r
199 <RULES SET="CUSTOM_KEYWORDS" IGNORE_CASE="FALSE">
\r
200 <SEQ_REGEXP HASH_CHAR="X" AT_LINE_START="TRUE" TYPE="INVALID">X-[A-Za-z-]+</SEQ_REGEXP>
\r