123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /*
- Language: AppleScript
- Authors: Nathan Grigg <nathan@nathanamy.org>, Dr. Drang <drdrang@gmail.com>
- Category: scripting
- Website: https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html
- Audit: 2020
- */
- /** @type LanguageFn */
- function applescript(hljs) {
- const regex = hljs.regex;
- 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|0 paragraph paragraphs rest reverse running time version '
- + 'weekday word words year'
- },
- contains: [
- STRING,
- hljs.C_NUMBER_MODE,
- {
- className: 'built_in',
- begin: regex.concat(
- /\b/,
- regex.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: regex.concat(
- /\b/,
- regex.either(...KEYWORD_PATTERNS),
- /\b/
- )
- },
- {
- beginKeywords: 'on',
- illegal: /[${=;\n]/,
- contains: [
- hljs.UNDERSCORE_TITLE_MODE,
- PARAMS
- ]
- },
- ...COMMENTS
- ],
- illegal: /\/\/|->|=>|\[\[/
- };
- }
- export { applescript as default };
|