diff options
| author | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
| commit | a98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch) | |
| tree | 542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-protobuf.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-protobuf.js')
| -rw-r--r-- | public/prism/prism-protobuf.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/public/prism/prism-protobuf.js b/public/prism/prism-protobuf.js new file mode 100644 index 0000000..949ef3a --- /dev/null +++ b/public/prism/prism-protobuf.js @@ -0,0 +1,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); |
