aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-diff.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-diff.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-diff.js')
-rw-r--r--public/prism/prism-diff.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/public/prism/prism-diff.js b/public/prism/prism-diff.js
new file mode 100644
index 0000000..44e111a
--- /dev/null
+++ b/public/prism/prism-diff.js
@@ -0,0 +1,62 @@
+(function (Prism) {
+ Prism.languages.diff = {
+ coord: [
+ // Match all kinds of coord lines (prefixed by "+++", "---" or "***").
+ /^(?:\*{3}|-{3}|\+{3}).*$/m,
+ // Match "@@ ... @@" coord lines in unified diff.
+ /^@@.*@@$/m,
+ // Match coord lines in normal diff (starts with a number).
+ /^\d.*$/m,
+ ],
+
+ // deleted, inserted, unchanged, diff
+ };
+
+ /**
+ * A map from the name of a block to its line prefix.
+ *
+ * @type {Object<string, string>}
+ */
+ var PREFIXES = {
+ 'deleted-sign': '-',
+ 'deleted-arrow': '<',
+ 'inserted-sign': '+',
+ 'inserted-arrow': '>',
+ unchanged: ' ',
+ diff: '!',
+ };
+
+ // add a token for each prefix
+ Object.keys(PREFIXES).forEach(function (name) {
+ var prefix = PREFIXES[name];
+
+ var alias = [];
+ if (!/^\w+$/.test(name)) {
+ // "deleted-sign" -> "deleted"
+ alias.push(/\w+/.exec(name)[0]);
+ }
+ if (name === 'diff') {
+ alias.push('bold');
+ }
+
+ Prism.languages.diff[name] = {
+ pattern: RegExp('^(?:[' + prefix + '].*(?:\r\n?|\n|(?![\\s\\S])))+', 'm'),
+ alias: alias,
+ inside: {
+ line: {
+ pattern: /(.)(?=[\s\S]).*(?:\r\n?|\n)?/,
+ lookbehind: true,
+ },
+ prefix: {
+ pattern: /[\s\S]/,
+ alias: /\w+/.exec(name)[0],
+ },
+ },
+ };
+ });
+
+ // make prefixes available to Diff plugin
+ Object.defineProperty(Prism.languages.diff, 'PREFIXES', {
+ value: PREFIXES,
+ });
+})(Prism);