Skip to content

Commit 57320c0

Browse files
vala
1 parent dfe578b commit 57320c0

File tree

1 file changed

+43
-49
lines changed

1 file changed

+43
-49
lines changed

src/languages/vala.js

Lines changed: 43 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,10 @@
1-
import { insertBefore } from '../util/language-util.js';
21
import clike from './clike.js';
32

43
/** @type {import('../types.d.ts').LanguageProto<'vala'>} */
54
export default {
65
id: 'vala',
76
base: clike,
8-
grammar ({ base }) {
9-
insertBefore(base, 'string', {
10-
'raw-string': {
11-
pattern: /"""[\s\S]*?"""/,
12-
greedy: true,
13-
alias: 'string',
14-
},
15-
'template-string': {
16-
pattern: /@"[\s\S]*?"/,
17-
greedy: true,
18-
inside: {
19-
'interpolation': {
20-
pattern: /\$(?:\([^)]*\)|[a-zA-Z]\w*)/,
21-
inside: /** @type {Grammar} */ ({
22-
'delimiter': {
23-
pattern: /^\$\(?|\)$/,
24-
alias: 'punctuation',
25-
},
26-
$rest: /** @type {Grammar['$rest']} */ ('vala'),
27-
}),
28-
},
29-
'string': /[\s\S]+/,
30-
},
31-
},
32-
});
33-
34-
insertBefore(base, 'keyword', {
35-
'regex': {
36-
pattern:
37-
/\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[imsx]{0,4}(?=\s*(?:$|[\r\n,.;})\]]))/,
38-
greedy: true,
39-
inside: {
40-
'regex-source': {
41-
pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
42-
lookbehind: true,
43-
alias: 'language-regex',
44-
inside: 'regex',
45-
},
46-
'regex-delimiter': /^\//,
47-
'regex-flags': /^[a-z]+$/,
48-
},
49-
},
50-
});
51-
7+
grammar () {
528
return {
539
// Classes copied from csharp
5410
'class-name': [
@@ -93,10 +49,48 @@ export default {
9349
'operator': /\+\+|--|&&|\|\||<<=?|>>=?|=>|->|~|[+\-*\/%&^|=!<>]=?|\?\??|\.\.\./,
9450
'punctuation': /[{}[\];(),.:]/,
9551
'constant': /\b[A-Z0-9_]+\b/,
52+
$insert: {
53+
'raw-string': {
54+
$before: 'string',
55+
pattern: /"""[\s\S]*?"""/,
56+
greedy: true,
57+
alias: 'string',
58+
},
59+
'template-string': {
60+
$before: 'string',
61+
pattern: /@"[\s\S]*?"/,
62+
greedy: true,
63+
inside: {
64+
'interpolation': {
65+
pattern: /\$(?:\([^)]*\)|[a-zA-Z]\w*)/,
66+
inside: {
67+
'delimiter': {
68+
pattern: /^\$\(?|\)$/,
69+
alias: 'punctuation',
70+
},
71+
$rest: 'vala',
72+
},
73+
},
74+
'string': /[\s\S]+/,
75+
},
76+
},
77+
'regex': {
78+
$before: 'keyword',
79+
pattern:
80+
/\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[imsx]{0,4}(?=\s*(?:$|[\r\n,.;})\]]))/,
81+
greedy: true,
82+
inside: {
83+
'regex-source': {
84+
pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
85+
lookbehind: true,
86+
alias: 'language-regex',
87+
inside: 'regex',
88+
},
89+
'regex-delimiter': /^\//,
90+
'regex-flags': /^[a-z]+$/,
91+
},
92+
},
93+
},
9694
};
9795
},
9896
};
99-
100-
/**
101-
* @typedef {import('../types.d.ts').Grammar} Grammar
102-
*/

0 commit comments

Comments
 (0)