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));
|