aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-latte.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-latte.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-latte.js')
-rw-r--r--public/prism/prism-latte.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/public/prism/prism-latte.js b/public/prism/prism-latte.js
new file mode 100644
index 0000000..dbf91bb
--- /dev/null
+++ b/public/prism/prism-latte.js
@@ -0,0 +1,72 @@
+(function (Prism) {
+ Prism.languages.latte = {
+ comment: /^\{\*[\s\S]*/,
+ 'latte-tag': {
+ // https://latte.nette.org/en/tags
+ pattern: /(^\{(?:\/(?=[a-z]))?)(?:[=_]|[a-z]\w*\b(?!\())/i,
+ lookbehind: true,
+ alias: 'important',
+ },
+ delimiter: {
+ pattern: /^\{\/?|\}$/,
+ alias: 'punctuation',
+ },
+ php: {
+ pattern: /\S(?:[\s\S]*\S)?/,
+ alias: 'language-php',
+ inside: Prism.languages.php,
+ },
+ };
+
+ var markupLatte = Prism.languages.extend('markup', {});
+ Prism.languages.insertBefore(
+ 'inside',
+ 'attr-value',
+ {
+ 'n-attr': {
+ pattern: /n:[\w-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+))?/,
+ inside: {
+ 'attr-name': {
+ pattern: /^[^\s=]+/,
+ alias: 'important',
+ },
+ 'attr-value': {
+ pattern: /=[\s\S]+/,
+ inside: {
+ punctuation: [
+ /^=/,
+ {
+ pattern: /^(\s*)["']|["']$/,
+ lookbehind: true,
+ },
+ ],
+ php: {
+ pattern: /\S(?:[\s\S]*\S)?/,
+ inside: Prism.languages.php,
+ },
+ },
+ },
+ },
+ },
+ },
+ markupLatte.tag
+ );
+
+ Prism.hooks.add('before-tokenize', function (env) {
+ if (env.language !== 'latte') {
+ return;
+ }
+ var lattePattern =
+ /\{\*[\s\S]*?\*\}|\{[^'"\s{}*](?:[^"'/{}]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|\/\*(?:[^*]|\*(?!\/))*\*\/)*\}/g;
+ Prism.languages['markup-templating'].buildPlaceholders(
+ env,
+ 'latte',
+ lattePattern
+ );
+ env.grammar = markupLatte;
+ });
+
+ Prism.hooks.add('after-tokenize', function (env) {
+ Prism.languages['markup-templating'].tokenizePlaceholders(env, 'latte');
+ });
+})(Prism);