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-typoscript.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-typoscript.js')
| -rw-r--r-- | public/prism/prism-typoscript.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/public/prism/prism-typoscript.js b/public/prism/prism-typoscript.js new file mode 100644 index 0000000..cde7122 --- /dev/null +++ b/public/prism/prism-typoscript.js @@ -0,0 +1,80 @@ +(function (Prism) { + var keywords = + /\b(?:ACT|ACTIFSUB|CARRAY|CASE|CLEARGIF|COA|COA_INT|CONSTANTS|CONTENT|CUR|EDITPANEL|EFFECT|EXT|FILE|FLUIDTEMPLATE|FORM|FRAME|FRAMESET|GIFBUILDER|GMENU|GMENU_FOLDOUT|GMENU_LAYERS|GP|HMENU|HRULER|HTML|IENV|IFSUB|IMAGE|IMGMENU|IMGMENUITEM|IMGTEXT|IMG_RESOURCE|INCLUDE_TYPOSCRIPT|JSMENU|JSMENUITEM|LLL|LOAD_REGISTER|NO|PAGE|RECORDS|RESTORE_REGISTER|TEMPLATE|TEXT|TMENU|TMENUITEM|TMENU_LAYERS|USER|USER_INT|_GIFBUILDER|global|globalString|globalVar)\b/; + + Prism.languages.typoscript = { + comment: [ + { + // multiline comments /* */ + pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, + lookbehind: true, + }, + { + // double-slash comments - ignored when backslashes or colon is found in front + // also ignored whenever directly after an equal-sign, because it would probably be an url without protocol + pattern: /(^|[^\\:= \t]|(?:^|[^= \t])[ \t]+)\/\/.*/, + lookbehind: true, + greedy: true, + }, + { + // hash comments - ignored when leading quote is found for hex colors in strings + pattern: /(^|[^"'])#.*/, + lookbehind: true, + greedy: true, + }, + ], + function: [ + { + // old include style + pattern: + /<INCLUDE_TYPOSCRIPT:\s*source\s*=\s*(?:"[^"\r\n]*"|'[^'\r\n]*')\s*>/, + inside: { + string: { + pattern: /"[^"\r\n]*"|'[^'\r\n]*'/, + inside: { + keyword: keywords, + }, + }, + keyword: { + pattern: /INCLUDE_TYPOSCRIPT/, + }, + }, + }, + { + // new include style + pattern: /@import\s*(?:"[^"\r\n]*"|'[^'\r\n]*')/, + inside: { + string: /"[^"\r\n]*"|'[^'\r\n]*'/, + }, + }, + ], + string: { + pattern: /^([^=]*=[< ]?)(?:(?!\]\n).)*/, + lookbehind: true, + inside: { + function: /\{\$.*\}/, // constants include + keyword: keywords, + number: /^\d+$/, + punctuation: /[,|:]/, + }, + }, + keyword: keywords, + number: { + // special highlighting for indexes of arrays in tags + pattern: /\b\d+\s*[.{=]/, + inside: { + operator: /[.{=]/, + }, + }, + tag: { + pattern: /\.?[-\w\\]+\.?/, + inside: { + punctuation: /\./, + }, + }, + punctuation: /[{}[\];(),.:|]/, + operator: /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/, + }; + + Prism.languages.tsconfig = Prism.languages.typoscript; +})(Prism); |
