summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-protobuf.js
blob: 949ef3adc317b6ba87549128c1d52555cb87fba1 (plain)
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
(function (Prism) {
  var builtinTypes =
    /\b(?:bool|bytes|double|s?fixed(?:32|64)|float|[su]?int(?:32|64)|string)\b/;

  Prism.languages.protobuf = Prism.languages.extend('clike', {
    'class-name': [
      {
        pattern: /(\b(?:enum|extend|message|service)\s+)[A-Za-z_]\w*(?=\s*\{)/,
        lookbehind: true,
      },
      {
        pattern:
          /(\b(?:rpc\s+\w+|returns)\s*\(\s*(?:stream\s+)?)\.?[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*(?=\s*\))/,
        lookbehind: true,
      },
    ],
    keyword:
      /\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\s+\w)|service|stream|syntax|to)\b(?!\s*=\s*\d)/,
    function: /\b[a-z_]\w*(?=\s*\()/i,
  });

  Prism.languages.insertBefore('protobuf', 'operator', {
    map: {
      pattern: /\bmap<\s*[\w.]+\s*,\s*[\w.]+\s*>(?=\s+[a-z_]\w*\s*[=;])/i,
      alias: 'class-name',
      inside: {
        punctuation: /[<>.,]/,
        builtin: builtinTypes,
      },
    },
    builtin: builtinTypes,
    'positional-class-name': {
      pattern: /(?:\b|\B\.)[a-z_]\w*(?:\.[a-z_]\w*)*(?=\s+[a-z_]\w*\s*[=;])/i,
      alias: 'class-name',
      inside: {
        punctuation: /\./,
      },
    },
    annotation: {
      pattern: /(\[\s*)[a-z_]\w*(?=\s*=)/i,
      lookbehind: true,
    },
  });
})(Prism);
">: !0, inside: a, alias: 'language-javascript', }, punctuation: /[=[\]]/, }, }, 'class-name': [ { pattern: RegExp( '(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\\s+(?:<TYPE>\\s+)?)[A-Z]\\w*(?:\\.[A-Z]\\w*)*'.replace( /<TYPE>/g, function () { return n; } ) ), lookbehind: !0, inside: { punctuation: /\./ }, }, { pattern: RegExp('(@[a-z]+\\s+)' + n), lookbehind: !0, inside: { string: a.string, number: a.number, boolean: a.boolean, keyword: e.languages.typescript.keyword, operator: /=>|\.\.\.|[&|?:*]/, punctuation: /[.,;=<>{}()[\]]/, }, }, ], example: { pattern: /(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/, lookbehind: !0, inside: { code: { pattern: /^([\t ]*(?:\*\s*)?)\S.*$/m, lookbehind: !0, inside: a, alias: 'language-javascript', }, }, }, }), e.languages.javadoclike.addSupport('javascript', e.languages.jsdoc); })(Prism);