summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-protobuf.js
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
committerArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
commita98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch)
tree542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-protobuf.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-protobuf.js')
-rw-r--r--public/prism/prism-protobuf.js44
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);