| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | /** * @param {string} value * @returns {RegExp} * *//** * @param {RegExp | string } re * @returns {string} */function source(re) {  if (!re) return null;  if (typeof re === "string") return re;  return re.source;}/** * @param {...(RegExp | string) } args * @returns {string} */function concat(...args) {  const joined = args.map((x) => source(x)).join("");  return joined;}/** * Any of the passed expresssions may match * * Creates a huge this | this | that | that match * @param {(RegExp | string)[] } args * @returns {string} */function either(...args) {  const joined = '(' + args.map((x) => source(x)).join("|") + ")";  return joined;}/*Language: VBScriptDescription: 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/VBScriptCategory: scripting*//** @type LanguageFn */function vbscript(hljs) {  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').split(" ");  const BUILT_IN_OBJECTS = [    "server",    "response",    "request",    // take no arguments so can be called without ()    "scriptengine",    "scriptenginebuildversion",    "scriptengineminorversion",    "scriptenginemajorversion"  ];  const BUILT_IN_CALL = {    begin: concat(either(...BUILT_IN_FUNCTIONS), "\\s*\\("),    // relevance 0 because this is acting as a beginKeywords really    relevance:0,    keywords: {      built_in: BUILT_IN_FUNCTIONS    }  };  return {    name: 'VBScript',    aliases: ['vbs'],    case_insensitive: true,    keywords: {      keyword:        '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',      built_in: BUILT_IN_OBJECTS,      literal:        'true false null nothing empty'    },    illegal: '//',    contains: [      BUILT_IN_CALL,      hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '""'}]}),      hljs.COMMENT(        /'/,        /$/,        {          relevance: 0        }      ),      hljs.C_NUMBER_MODE    ]  };}module.exports = vbscript;
 |