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);
> lookbehind: !0, greedy: !0, inside: { 'template-punctuation': { pattern: /^`|`$/, alias: 'string' }, 'embedded-code': { pattern: /[\s\S]+/, alias: e }, }, }; } function s(e, t, n) { var r = { code: e, grammar: t, language: n }; return ( u.hooks.run('before-tokenize', r), (r.tokens = u.tokenize(r.code, r.grammar)), u.hooks.run('after-tokenize', r), r.tokens ); } function d(e) { var t = {}; t['interpolation-punctuation'] = i; var n = u.tokenize(e, t); if (3 === n.length) { var r = [1, 1]; r.push.apply(r, s(n[1], u.languages.javascript, 'javascript')), n.splice.apply(n, r); } return new u.Token('interpolation', n, a.alias, e); } function c(a, e, i) { var t = u.tokenize(a, { interpolation: { pattern: RegExp(r), lookbehind: !0 }, }), f = 0, y = {}, n = s( t .map(function (e) { if ('string' == typeof e) return e; for ( var t, n = e.content; -1 !== a.indexOf( ((r = f++), (t = '___' + i.toUpperCase() + '_' + r + '___')) ); ); return (y[t] = n), t; var r; }) .join(''), e, i ), v = Object.keys(y); return ( (f = 0), (function e(t) { for (var n = 0; n < t.length; n++) { if (f >= v.length) return; var r = t[n]; if ('string' == typeof r || 'string' == typeof r.content) { var a = v[f], i = 'string' == typeof r ? r : r.content, s = i.indexOf(a); if (-1 !== s) { ++f; var o = i.substring(0, s), p = d(y[a]), l = i.substring(s + a.length), g = []; if ((o && g.push(o), g.push(p), l)) { var u = [l]; e(u), g.push.apply(g, u); } 'string' == typeof r ? (t.splice.apply(t, [n, 1].concat(g)), (n += g.length - 1)) : (r.content = g); } } else { var c = r.content; Array.isArray(c) ? e(c) : e([c]); } } })(n), new u.Token(i, n, 'language-' + i, a) ); } u.languages.javascript['template-string'] = [ t( 'css', '\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)' ), t('html', '\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?='), t('svg', '\\bsvg'), t('markdown', '\\b(?:markdown|md)'), t('graphql', '\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)'), t('sql', '\\bsql'), e, ].filter(Boolean); var o = { javascript: !0, js: !0, typescript: !0, ts: !0, jsx: !0, tsx: !0 }; function f(e) { return 'string' == typeof e ? e : Array.isArray(e) ? e.map(f).join('') : f(e.content); } u.hooks.add('after-tokenize', function (e) { e.language in o && !(function e(t) { for (var n = 0, r = t.length; n < r; n++) { var a = t[n]; if ('string' != typeof a) { var i = a.content; if (Array.isArray(i)) if ('template-string' === a.type) { var s = i[1]; if ( 3 === i.length && 'string' != typeof s && 'embedded-code' === s.type ) { var o = f(s), p = s.alias, l = Array.isArray(p) ? p[0] : p, g = u.languages[l]; if (!g) continue; i[1] = c(o, g, l); } } else e(i); else 'string' != typeof i && e([i]); } } })(e.tokens); }); })(Prism);