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-dot.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-dot.js')
| -rw-r--r-- | public/prism/prism-dot.js | 86 |
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); |
