| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | /** * @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: AppleScriptAuthors: Nathan Grigg <nathan@nathanamy.org>, Dr. Drang <drdrang@gmail.com>Category: scriptingWebsite: https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.htmlAudit: 2020*//** @type LanguageFn */function applescript(hljs) {  const STRING = hljs.inherit(    hljs.QUOTE_STRING_MODE, {      illegal: null    });  const PARAMS = {    className: 'params',    begin: /\(/,    end: /\)/,    contains: [      'self',      hljs.C_NUMBER_MODE,      STRING    ]  };  const COMMENT_MODE_1 = hljs.COMMENT(/--/, /$/);  const COMMENT_MODE_2 = hljs.COMMENT(    /\(\*/,    /\*\)/,    {      contains: [        'self', // allow nesting        COMMENT_MODE_1      ]    }  );  const COMMENTS = [    COMMENT_MODE_1,    COMMENT_MODE_2,    hljs.HASH_COMMENT_MODE  ];  const KEYWORD_PATTERNS = [    /apart from/,    /aside from/,    /instead of/,    /out of/,    /greater than/,    /isn't|(doesn't|does not) (equal|come before|come after|contain)/,    /(greater|less) than( or equal)?/,    /(starts?|ends|begins?) with/,    /contained by/,    /comes (before|after)/,    /a (ref|reference)/,    /POSIX (file|path)/,    /(date|time) string/,    /quoted form/  ];  const BUILT_IN_PATTERNS = [    /clipboard info/,    /the clipboard/,    /info for/,    /list (disks|folder)/,    /mount volume/,    /path to/,    /(close|open for) access/,    /(get|set) eof/,    /current date/,    /do shell script/,    /get volume settings/,    /random number/,    /set volume/,    /system attribute/,    /system info/,    /time to GMT/,    /(load|run|store) script/,    /scripting components/,    /ASCII (character|number)/,    /localized string/,    /choose (application|color|file|file name|folder|from list|remote application|URL)/,    /display (alert|dialog)/  ];  return {    name: 'AppleScript',    aliases: [ 'osascript' ],    keywords: {      keyword:        'about above after against and around as at back before beginning ' +        'behind below beneath beside between but by considering ' +        'contain contains continue copy div does eighth else end equal ' +        'equals error every exit fifth first for fourth from front ' +        'get given global if ignoring in into is it its last local me ' +        'middle mod my ninth not of on onto or over prop property put ref ' +        'reference repeat returning script second set seventh since ' +        'sixth some tell tenth that the|0 then third through thru ' +        'timeout times to transaction try until where while whose with ' +        'without',      literal:        'AppleScript false linefeed return pi quote result space tab true',      built_in:        'alias application boolean class constant date file integer list ' +        'number real record string text ' +        'activate beep count delay launch log offset read round ' +        'run say summarize write ' +        'character characters contents day frontmost id item length ' +        'month name paragraph paragraphs rest reverse running time version ' +        'weekday word words year'    },    contains: [      STRING,      hljs.C_NUMBER_MODE,      {        className: 'built_in',        begin: concat(          /\b/,          either(...BUILT_IN_PATTERNS),          /\b/        )      },      {        className: 'built_in',        begin: /^\s*return\b/      },      {        className: 'literal',        begin:          /\b(text item delimiters|current application|missing value)\b/      },      {        className: 'keyword',        begin: concat(          /\b/,          either(...KEYWORD_PATTERNS),          /\b/        )      },      {        beginKeywords: 'on',        illegal: /[${=;\n]/,        contains: [          hljs.UNDERSCORE_TITLE_MODE,          PARAMS        ]      },      ...COMMENTS    ],    illegal: /\/\/|->|=>|\[\[/  };}module.exports = applescript;
 |