summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-typoscript.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-typoscript.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-typoscript.js')
-rw-r--r--public/prism/prism-typoscript.js80
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);