UNPKG

3.62 kBJavaScriptView Raw
1/*
2Language: VBScript
3Description: VBScript ("Microsoft Visual Basic Scripting Edition") is an Active Scripting language developed by Microsoft that is modeled on Visual Basic.
4Author: Nikita Ledyaev <lenikita@yandex.ru>
5Contributors: Michal Gabrukiewicz <mgabru@gmail.com>
6Website: https://en.wikipedia.org/wiki/VBScript
7Category: scripting
8*/
9
10/** @type LanguageFn */
11function 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 // take no arguments so can be called without ()
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 // relevance 0 because this is acting as a beginKeywords really
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
224export { vbscript as default };