UNPKG

1.01 kBJavaScriptView Raw
1(function (Prism) {
2
3 var builtinTypes = /\b(?:double|float|[su]?int(?:32|64)|s?fixed(?:32|64)|bool|string|bytes)\b/;
4
5 Prism.languages.protobuf = Prism.languages.extend('clike', {
6 'class-name': {
7 pattern: /(\b(?:enum|extend|message|service)\s+)[A-Za-z_]\w*(?=\s*\{)/,
8 lookbehind: true
9 },
10 'keyword': /\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|service|syntax|to)\b/
11 });
12
13 Prism.languages.insertBefore('protobuf', 'operator', {
14 'map': {
15 pattern: /\bmap<\s*[\w.]+\s*,\s*[\w.]+\s*>(?=\s+[A-Za-z_]\w*\s*[=;])/,
16 alias: 'class-name',
17 inside: {
18 'punctuation': /[<>.,]/,
19 'builtin': builtinTypes
20 }
21 },
22 'builtin': builtinTypes,
23 'positional-class-name': {
24 pattern: /(?:\b|\B\.)[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*(?=\s+[A-Za-z_]\w*\s*[=;])/,
25 alias: 'class-name',
26 inside: {
27 'punctuation': /\./
28 }
29 },
30 'annotation': {
31 pattern: /(\[\s*)[A-Za-z_]\w*(?=\s*=)/,
32 lookbehind: true
33 }
34 });
35
36}(Prism));