UNPKG

1.29 kBJavaScriptView Raw
1(function(Prism) {
2 Prism.languages.crystal = Prism.languages.extend('ruby', {
3 keyword: [
4 /\b(?:abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|rescue|return|require|select|self|sizeof|struct|super|then|type|typeof|uninitialized|union|unless|until|when|while|with|yield|__DIR__|__END_LINE__|__FILE__|__LINE__)\b/,
5 {
6 pattern: /(\.\s*)(?:is_a|responds_to)\?/,
7 lookbehind: true
8 }
9 ],
10
11 number: /\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/
12 });
13
14 Prism.languages.insertBefore('crystal', 'string', {
15 attribute: {
16 pattern: /@\[.+?\]/,
17 alias: 'attr-name',
18 inside: {
19 delimiter: {
20 pattern: /^@\[|\]$/,
21 alias: 'tag'
22 },
23 rest: Prism.languages.crystal
24 }
25 },
26
27 expansion: [
28 {
29 pattern: /\{\{.+?\}\}/,
30 inside: {
31 delimiter: {
32 pattern: /^\{\{|\}\}$/,
33 alias: 'tag'
34 },
35 rest: Prism.languages.crystal
36 }
37 },
38 {
39 pattern: /\{%.+?%\}/,
40 inside: {
41 delimiter: {
42 pattern: /^\{%|%\}$/,
43 alias: 'tag'
44 },
45 rest: Prism.languages.crystal
46 }
47 }
48 ]
49 });
50
51}(Prism));