UNPKG

1.98 kBJavaScriptView Raw
1(function (Prism) {
2 Prism.languages.kotlin = Prism.languages.extend('clike', {
3 'keyword': {
4 // The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get
5 pattern: /(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,
6 lookbehind: true
7 },
8 'function': [
9 /\w+(?=\s*\()/,
10 {
11 pattern: /(\.)\w+(?=\s*\{)/,
12 lookbehind: true
13 }
14 ],
15 'number': /\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,
16 'operator': /\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/
17 });
18
19 delete Prism.languages.kotlin["class-name"];
20
21 Prism.languages.insertBefore('kotlin', 'string', {
22 'raw-string': {
23 pattern: /("""|''')[\s\S]*?\1/,
24 alias: 'string'
25 // See interpolation below
26 }
27 });
28 Prism.languages.insertBefore('kotlin', 'keyword', {
29 'annotation': {
30 pattern: /\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,
31 alias: 'builtin'
32 }
33 });
34 Prism.languages.insertBefore('kotlin', 'function', {
35 'label': {
36 pattern: /\w+@|@\w+/,
37 alias: 'symbol'
38 }
39 });
40
41 var interpolation = [
42 {
43 pattern: /\$\{[^}]+\}/,
44 inside: {
45 'delimiter': {
46 pattern: /^\$\{|\}$/,
47 alias: 'variable'
48 },
49 rest: Prism.languages.kotlin
50 }
51 },
52 {
53 pattern: /\$\w+/,
54 alias: 'variable'
55 }
56 ];
57
58 Prism.languages.kotlin['string'].inside = Prism.languages.kotlin['raw-string'].inside = {
59 interpolation: interpolation
60 };
61
62 Prism.languages.kt = Prism.languages.kotlin;
63 Prism.languages.kts = Prism.languages.kotlin;
64}(Prism));