hexo/node_modules/highlight.js/lib/languages/vbscript.js

221 lines
3.7 KiB
JavaScript

/*
Language: VBScript
Description: VBScript ("Microsoft Visual Basic Scripting Edition") is an Active Scripting language developed by Microsoft that is modeled on Visual Basic.
Author: Nikita Ledyaev <lenikita@yandex.ru>
Contributors: Michal Gabrukiewicz <mgabru@gmail.com>
Website: https://en.wikipedia.org/wiki/VBScript
Category: scripting
*/
/** @type LanguageFn */
function vbscript(hljs) {
const regex = hljs.regex;
const BUILT_IN_FUNCTIONS = [
"lcase",
"month",
"vartype",
"instrrev",
"ubound",
"setlocale",
"getobject",
"rgb",
"getref",
"string",
"weekdayname",
"rnd",
"dateadd",
"monthname",
"now",
"day",
"minute",
"isarray",
"cbool",
"round",
"formatcurrency",
"conversions",
"csng",
"timevalue",
"second",
"year",
"space",
"abs",
"clng",
"timeserial",
"fixs",
"len",
"asc",
"isempty",
"maths",
"dateserial",
"atn",
"timer",
"isobject",
"filter",
"weekday",
"datevalue",
"ccur",
"isdate",
"instr",
"datediff",
"formatdatetime",
"replace",
"isnull",
"right",
"sgn",
"array",
"snumeric",
"log",
"cdbl",
"hex",
"chr",
"lbound",
"msgbox",
"ucase",
"getlocale",
"cos",
"cdate",
"cbyte",
"rtrim",
"join",
"hour",
"oct",
"typename",
"trim",
"strcomp",
"int",
"createobject",
"loadpicture",
"tan",
"formatnumber",
"mid",
"split",
"cint",
"sin",
"datepart",
"ltrim",
"sqr",
"time",
"derived",
"eval",
"date",
"formatpercent",
"exp",
"inputbox",
"left",
"ascw",
"chrw",
"regexp",
"cstr",
"err"
];
const BUILT_IN_OBJECTS = [
"server",
"response",
"request",
// take no arguments so can be called without ()
"scriptengine",
"scriptenginebuildversion",
"scriptengineminorversion",
"scriptenginemajorversion"
];
const BUILT_IN_CALL = {
begin: regex.concat(regex.either(...BUILT_IN_FUNCTIONS), "\\s*\\("),
// relevance 0 because this is acting as a beginKeywords really
relevance: 0,
keywords: { built_in: BUILT_IN_FUNCTIONS }
};
const LITERALS = [
"true",
"false",
"null",
"nothing",
"empty"
];
const KEYWORDS = [
"call",
"class",
"const",
"dim",
"do",
"loop",
"erase",
"execute",
"executeglobal",
"exit",
"for",
"each",
"next",
"function",
"if",
"then",
"else",
"on",
"error",
"option",
"explicit",
"new",
"private",
"property",
"let",
"get",
"public",
"randomize",
"redim",
"rem",
"select",
"case",
"set",
"stop",
"sub",
"while",
"wend",
"with",
"end",
"to",
"elseif",
"is",
"or",
"xor",
"and",
"not",
"class_initialize",
"class_terminate",
"default",
"preserve",
"in",
"me",
"byval",
"byref",
"step",
"resume",
"goto"
];
return {
name: 'VBScript',
aliases: [ 'vbs' ],
case_insensitive: true,
keywords: {
keyword: KEYWORDS,
built_in: BUILT_IN_OBJECTS,
literal: LITERALS
},
illegal: '//',
contains: [
BUILT_IN_CALL,
hljs.inherit(hljs.QUOTE_STRING_MODE, { contains: [ { begin: '""' } ] }),
hljs.COMMENT(
/'/,
/$/,
{ relevance: 0 }
),
hljs.C_NUMBER_MODE
]
};
}
module.exports = vbscript;