1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | function vbscript(hljs) {
|
12 | const regex = hljs.regex;
|
13 | const BUILT_IN_FUNCTIONS = [
|
14 | "lcase",
|
15 | "month",
|
16 | "vartype",
|
17 | "instrrev",
|
18 | "ubound",
|
19 | "setlocale",
|
20 | "getobject",
|
21 | "rgb",
|
22 | "getref",
|
23 | "string",
|
24 | "weekdayname",
|
25 | "rnd",
|
26 | "dateadd",
|
27 | "monthname",
|
28 | "now",
|
29 | "day",
|
30 | "minute",
|
31 | "isarray",
|
32 | "cbool",
|
33 | "round",
|
34 | "formatcurrency",
|
35 | "conversions",
|
36 | "csng",
|
37 | "timevalue",
|
38 | "second",
|
39 | "year",
|
40 | "space",
|
41 | "abs",
|
42 | "clng",
|
43 | "timeserial",
|
44 | "fixs",
|
45 | "len",
|
46 | "asc",
|
47 | "isempty",
|
48 | "maths",
|
49 | "dateserial",
|
50 | "atn",
|
51 | "timer",
|
52 | "isobject",
|
53 | "filter",
|
54 | "weekday",
|
55 | "datevalue",
|
56 | "ccur",
|
57 | "isdate",
|
58 | "instr",
|
59 | "datediff",
|
60 | "formatdatetime",
|
61 | "replace",
|
62 | "isnull",
|
63 | "right",
|
64 | "sgn",
|
65 | "array",
|
66 | "snumeric",
|
67 | "log",
|
68 | "cdbl",
|
69 | "hex",
|
70 | "chr",
|
71 | "lbound",
|
72 | "msgbox",
|
73 | "ucase",
|
74 | "getlocale",
|
75 | "cos",
|
76 | "cdate",
|
77 | "cbyte",
|
78 | "rtrim",
|
79 | "join",
|
80 | "hour",
|
81 | "oct",
|
82 | "typename",
|
83 | "trim",
|
84 | "strcomp",
|
85 | "int",
|
86 | "createobject",
|
87 | "loadpicture",
|
88 | "tan",
|
89 | "formatnumber",
|
90 | "mid",
|
91 | "split",
|
92 | "cint",
|
93 | "sin",
|
94 | "datepart",
|
95 | "ltrim",
|
96 | "sqr",
|
97 | "time",
|
98 | "derived",
|
99 | "eval",
|
100 | "date",
|
101 | "formatpercent",
|
102 | "exp",
|
103 | "inputbox",
|
104 | "left",
|
105 | "ascw",
|
106 | "chrw",
|
107 | "regexp",
|
108 | "cstr",
|
109 | "err"
|
110 | ];
|
111 | const BUILT_IN_OBJECTS = [
|
112 | "server",
|
113 | "response",
|
114 | "request",
|
115 |
|
116 | "scriptengine",
|
117 | "scriptenginebuildversion",
|
118 | "scriptengineminorversion",
|
119 | "scriptenginemajorversion"
|
120 | ];
|
121 |
|
122 | const BUILT_IN_CALL = {
|
123 | begin: regex.concat(regex.either(...BUILT_IN_FUNCTIONS), "\\s*\\("),
|
124 |
|
125 | relevance: 0,
|
126 | keywords: {
|
127 | built_in: BUILT_IN_FUNCTIONS
|
128 | }
|
129 | };
|
130 |
|
131 | const LITERALS = [
|
132 | "true",
|
133 | "false",
|
134 | "null",
|
135 | "nothing",
|
136 | "empty"
|
137 | ];
|
138 |
|
139 | const KEYWORDS = [
|
140 | "call",
|
141 | "class",
|
142 | "const",
|
143 | "dim",
|
144 | "do",
|
145 | "loop",
|
146 | "erase",
|
147 | "execute",
|
148 | "executeglobal",
|
149 | "exit",
|
150 | "for",
|
151 | "each",
|
152 | "next",
|
153 | "function",
|
154 | "if",
|
155 | "then",
|
156 | "else",
|
157 | "on",
|
158 | "error",
|
159 | "option",
|
160 | "explicit",
|
161 | "new",
|
162 | "private",
|
163 | "property",
|
164 | "let",
|
165 | "get",
|
166 | "public",
|
167 | "randomize",
|
168 | "redim",
|
169 | "rem",
|
170 | "select",
|
171 | "case",
|
172 | "set",
|
173 | "stop",
|
174 | "sub",
|
175 | "while",
|
176 | "wend",
|
177 | "with",
|
178 | "end",
|
179 | "to",
|
180 | "elseif",
|
181 | "is",
|
182 | "or",
|
183 | "xor",
|
184 | "and",
|
185 | "not",
|
186 | "class_initialize",
|
187 | "class_terminate",
|
188 | "default",
|
189 | "preserve",
|
190 | "in",
|
191 | "me",
|
192 | "byval",
|
193 | "byref",
|
194 | "step",
|
195 | "resume",
|
196 | "goto"
|
197 | ];
|
198 |
|
199 | return {
|
200 | name: 'VBScript',
|
201 | aliases: ['vbs'],
|
202 | case_insensitive: true,
|
203 | keywords: {
|
204 | keyword: KEYWORDS,
|
205 | built_in: BUILT_IN_OBJECTS,
|
206 | literal: LITERALS
|
207 | },
|
208 | illegal: '//',
|
209 | contains: [
|
210 | BUILT_IN_CALL,
|
211 | hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '""'}]}),
|
212 | hljs.COMMENT(
|
213 | /'/,
|
214 | /$/,
|
215 | {
|
216 | relevance: 0
|
217 | }
|
218 | ),
|
219 | hljs.C_NUMBER_MODE
|
220 | ]
|
221 | };
|
222 | }
|
223 |
|
224 | export { vbscript as default };
|