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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
!(function (e) {
(e.languages.ruby = e.languages.extend('clike', {
comment: { pattern: /#.*|^=begin\s[\s\S]*?^=end/m, greedy: !0 },
'class-name': {
pattern:
/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,
lookbehind: !0,
inside: { punctuation: /[.\\]/ },
},
keyword:
/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,
operator:
/\.{2,3}|&\.|===|<?=>|[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,
punctuation: /[(){}[\].,;]/,
})),
e.languages.insertBefore('ruby', 'operator', {
'double-colon': { pattern: /::/, alias: 'punctuation' },
});
var n = {
pattern: /((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,
lookbehind: !0,
inside: {
content: {
pattern: /^(#\{)[\s\S]+(?=\}$)/,
lookbehind: !0,
inside: e.languages.ruby,
},
delimiter: { pattern: /^#\{|\}$/, alias: 'punctuation' },
},
};
delete e.languages.ruby.function;
var t =
'(?:' +
[
'([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1',
'\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)',
'\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}',
'\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]',
'<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>',
].join('|') +
')',
i =
'(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';
e.languages.insertBefore('ruby', 'keyword', {
'regex-literal': [
{
pattern: RegExp('%r' + t + '[egimnosux]{0,6}'),
greedy: !0,
inside: { interpolation: n, regex: /[\s\S]+/ },
},
{
pattern:
/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,
lookbehind: !0,
greedy: !0,
inside: { interpolation: n, regex: /[\s\S]+/ },
},
],
variable: /[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,
symbol: [
{ pattern: RegExp('(^|[^:]):' + i), lookbehind: !0, greedy: !0 },
{
pattern: RegExp('([\r\n{(,][ \t]*)' + i + '(?=:(?!:))'),
lookbehind: !0,
greedy: !0,
},
],
'method-definition': {
pattern: /(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,
lookbehind: !0,
inside: {
function: /\b\w+$/,
keyword: /^self\b/,
'class-name': /^\w+/,
punctuation: /\./,
},
},
}),
e.languages.insertBefore('ruby', 'string', {
'string-literal': [
{
pattern: RegExp('%[qQiIwWs]?' + t),
greedy: !0,
inside: { interpolation: n, string: /[\s\S]+/ },
},
{
pattern:
/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,
greedy: !0,
inside: { interpolation: n, string: /[\s\S]+/ },
},
{
pattern: /<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,
alias: 'heredoc-string',
greedy: !0,
inside: {
delimiter: {
pattern: /^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,
inside: { symbol: /\b\w+/, punctuation: /^<<[-~]?/ },
},
interpolation: n,
string: /[\s\S]+/,
},
},
{
pattern: /<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,
alias: 'heredoc-string',
greedy: !0,
inside: {
delimiter: {
pattern: /^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,
inside: { symbol: /\b\w+/, punctuation: /^<<[-~]?'|'$/ },
},
string: /[\s\S]+/,
},
},
],
'command-literal': [
{
pattern: RegExp('%x' + t),
greedy: !0,
inside: {
interpolation: n,
command: { pattern: /[\s\S]+/, alias: 'string' },
},
},
{
pattern: /`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,
greedy: !0,
inside: {
interpolation: n,
command: { pattern: /[\s\S]+/, alias: 'string' },
},
},
],
}),
delete e.languages.ruby.string,
e.languages.insertBefore('ruby', 'number', {
builtin:
/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,
constant: /\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/,
}),
(e.languages.rb = e.languages.ruby);
})(Prism);
|