summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-dot.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-dot.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-dot.js')
-rw-r--r--public/prism/prism-dot.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/public/prism/prism-dot.js b/public/prism/prism-dot.js
new file mode 100644
index 0000000..c6cd170
--- /dev/null
+++ b/public/prism/prism-dot.js
@@ -0,0 +1,86 @@
+// https://www.graphviz.org/doc/info/lang.html
+
+(function (Prism) {
+ var ID =
+ '(?:' +
+ [
+ // an identifier
+ /[a-zA-Z_\x80-\uFFFF][\w\x80-\uFFFF]*/.source,
+ // a number
+ /-?(?:\.\d+|\d+(?:\.\d*)?)/.source,
+ // a double-quoted string
+ /"[^"\\]*(?:\\[\s\S][^"\\]*)*"/.source,
+ // HTML-like string
+ /<(?:[^<>]|(?!<!--)<(?:[^<>"']|"[^"]*"|'[^']*')+>|<!--(?:[^-]|-(?!->))*-->)*>/
+ .source,
+ ].join('|') +
+ ')';
+
+ var IDInside = {
+ markup: {
+ pattern: /(^<)[\s\S]+(?=>$)/,
+ lookbehind: true,
+ alias: ['language-markup', 'language-html', 'language-xml'],
+ inside: Prism.languages.markup,
+ },
+ };
+
+ /**
+ * @param {string} source
+ * @param {string} flags
+ * @returns {RegExp}
+ */
+ function withID(source, flags) {
+ return RegExp(
+ source.replace(/<ID>/g, function () {
+ return ID;
+ }),
+ flags
+ );
+ }
+
+ Prism.languages.dot = {
+ comment: {
+ pattern: /\/\/.*|\/\*[\s\S]*?\*\/|^#.*/m,
+ greedy: true,
+ },
+ 'graph-name': {
+ pattern: withID(
+ /(\b(?:digraph|graph|subgraph)[ \t\r\n]+)<ID>/.source,
+ 'i'
+ ),
+ lookbehind: true,
+ greedy: true,
+ alias: 'class-name',
+ inside: IDInside,
+ },
+ 'attr-value': {
+ pattern: withID(/(=[ \t\r\n]*)<ID>/.source),
+ lookbehind: true,
+ greedy: true,
+ inside: IDInside,
+ },
+ 'attr-name': {
+ pattern: withID(/([\[;, \t\r\n])<ID>(?=[ \t\r\n]*=)/.source),
+ lookbehind: true,
+ greedy: true,
+ inside: IDInside,
+ },
+ keyword: /\b(?:digraph|edge|graph|node|strict|subgraph)\b/i,
+ 'compass-point': {
+ pattern: /(:[ \t\r\n]*)(?:[ewc_]|[ns][ew]?)(?![\w\x80-\uFFFF])/,
+ lookbehind: true,
+ alias: 'builtin',
+ },
+ node: {
+ pattern: withID(/(^|[^-.\w\x80-\uFFFF\\])<ID>/.source),
+ lookbehind: true,
+ greedy: true,
+ inside: IDInside,
+ },
+ operator: /[=:]|-[->]/,
+ punctuation: /[\[\]{};,]/,
+ };
+
+ Prism.languages.gv = Prism.languages.dot;
+})(Prism);