-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathactionscript.ts
35 lines (29 loc) · 1.22 KB
/
actionscript.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { insertBefore } from '../shared/language-util';
import javascript from './javascript';
import type { GrammarToken, LanguageProto } from '../types';
export default {
id: 'actionscript',
require: javascript,
grammar ({ extend }) {
const actionscript = extend('javascript', {
'keyword':
/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,
'operator': /\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/,
});
const className = actionscript['class-name'] as GrammarToken;
className.alias = 'function';
delete actionscript['doc-comment'];
// doesn't work with AS because AS is too complex
delete actionscript['parameter'];
delete actionscript['literal-property'];
insertBefore(actionscript, 'string', {
'xml': {
pattern:
/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,
lookbehind: true,
inside: 'markup',
},
});
return actionscript;
},
} as LanguageProto<'actionscript'>;