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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 |
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1× | "use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.coffeescript = exports.coffee = undefined;
var _javascript = require("./javascript");
var _utils = require("../utils");
// Ignore comments starting with { to privilege string interpolation highlighting
var comment = /#(?!\{).+/,
interpolation = {
pattern: /#\{[^}]+\}/,
alias: 'variable'
};
var coffeescript = _utils.lang.extend(_javascript.javascript, {
comment: comment,
string: [
// Strings are multiline
/'(?:\\?[^\\])*?'/, {
// Strings are multiline
pattern: /"(?:\\?[^\\])*?"/,
inside: {
interpolation: interpolation,
_order: ["interpolation"]
}
}],
keyword: /\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,
"class-member": {
pattern: /@(?!\d)\w+/,
alias: 'variable'
},
_order: ["string", "keyword", "class-member"]
});
_utils.lang.insertBefore(coffeescript, 'comment', {
"multiline-comment": {
pattern: /###[\s\S]+?###/,
alias: 'comment'
},
// Block regexp can contain comments and interpolation
"block-regex": {
pattern: /\/{3}[\s\S]*?\/{3}/,
alias: 'regex',
inside: {
comment: comment,
interpolation: interpolation,
_order: ["comment", "interpolation"]
}
},
_order: ["multiline-comment", "block-regex"]
});
_utils.lang.insertBefore(coffeescript, 'string', {
"inline-javascript": {
pattern: /`(?:\\?[\s\S])*?`/,
inside: {
delimiter: {
pattern: /^`|`$/,
alias: "punctuation"
},
_order: ["delimiter"]
}
},
// Block strings
"multiline-string": [{
pattern: /'''[\s\S]*?'''/,
alias: "string"
}, {
pattern: /"""[\s\S]*?"""/,
alias: "string",
inside: {
interpolation: interpolation,
_order: ["interpolation"]
}
}],
_order: ["inline-javascript", "multiline-string"]
});
_utils.lang.insertAfter(coffeescript["inline-javascript"].inside, "delimiter", _utils.lang.clone(_javascript.javascript));
_utils.lang.insertBefore(coffeescript, "keyword", {
// Object property
property: /(?!\d)\w+(?=\s*:(?!:))/,
_order: ["property"]
});
exports.coffee = coffeescript;
exports.coffeescript = coffeescript; |