aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-less.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-less.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-less.js')
-rw-r--r--public/prism/prism-less.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/public/prism/prism-less.js b/public/prism/prism-less.js
new file mode 100644
index 0000000..e4703a3
--- /dev/null
+++ b/public/prism/prism-less.js
@@ -0,0 +1,56 @@
+/* FIXME :
+ :extend() is not handled specifically : its highlighting is buggy.
+ Mixin usage must be inside a ruleset to be highlighted.
+ At-rules (e.g. import) containing interpolations are buggy.
+ Detached rulesets are highlighted as at-rules.
+ A comment before a mixin usage prevents the latter to be properly highlighted.
+ */
+
+Prism.languages.less = Prism.languages.extend('css', {
+ comment: [
+ /\/\*[\s\S]*?\*\//,
+ {
+ pattern: /(^|[^\\])\/\/.*/,
+ lookbehind: true,
+ },
+ ],
+ atrule: {
+ pattern:
+ /@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,
+ inside: {
+ punctuation: /[:()]/,
+ },
+ },
+ // selectors and mixins are considered the same
+ selector: {
+ pattern:
+ /(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,
+ inside: {
+ // mixin parameters
+ variable: /@+[\w-]+/,
+ },
+ },
+
+ property: /(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,
+ operator: /[+\-*\/]/,
+});
+
+Prism.languages.insertBefore('less', 'property', {
+ variable: [
+ // Variable declaration (the colon must be consumed!)
+ {
+ pattern: /@[\w-]+\s*:/,
+ inside: {
+ punctuation: /:/,
+ },
+ },
+
+ // Variable usage
+ /@@?[\w-]+/,
+ ],
+ 'mixin-usage': {
+ pattern: /([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,
+ lookbehind: true,
+ alias: 'function',
+ },
+});