summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-qml.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-qml.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-qml.js')
-rw-r--r--public/prism/prism-qml.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/public/prism/prism-qml.js b/public/prism/prism-qml.js
new file mode 100644
index 0000000..7182280
--- /dev/null
+++ b/public/prism/prism-qml.js
@@ -0,0 +1,83 @@
+(function (Prism) {
+ var jsString = /"(?:\\.|[^\\"\r\n])*"|'(?:\\.|[^\\'\r\n])*'/.source;
+ var jsComment = /\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))*\*\//.source;
+
+ var jsExpr =
+ /(?:[^\\()[\]{}"'/]|<string>|\/(?![*/])|<comment>|\(<expr>*\)|\[<expr>*\]|\{<expr>*\}|\\[\s\S])/.source
+ .replace(/<string>/g, function () {
+ return jsString;
+ })
+ .replace(/<comment>/g, function () {
+ return jsComment;
+ });
+
+ // the pattern will blow up, so only a few iterations
+ for (var i = 0; i < 2; i++) {
+ jsExpr = jsExpr.replace(/<expr>/g, function () {
+ return jsExpr;
+ });
+ }
+ jsExpr = jsExpr.replace(/<expr>/g, '[^\\s\\S]');
+
+ Prism.languages.qml = {
+ comment: {
+ pattern: /\/\/.*|\/\*[\s\S]*?\*\//,
+ greedy: true,
+ },
+ 'javascript-function': {
+ pattern: RegExp(
+ /((?:^|;)[ \t]*)function\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*\(<js>*\)\s*\{<js>*\}/.source.replace(
+ /<js>/g,
+ function () {
+ return jsExpr;
+ }
+ ),
+ 'm'
+ ),
+ lookbehind: true,
+ greedy: true,
+ alias: 'language-javascript',
+ inside: Prism.languages.javascript,
+ },
+ 'class-name': {
+ pattern: /((?:^|[:;])[ \t]*)(?!\d)\w+(?=[ \t]*\{|[ \t]+on\b)/m,
+ lookbehind: true,
+ },
+ property: [
+ {
+ pattern: /((?:^|[;{])[ \t]*)(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,
+ lookbehind: true,
+ },
+ {
+ pattern:
+ /((?:^|[;{])[ \t]*)property[ \t]+(?!\d)\w+(?:\.\w+)*[ \t]+(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,
+ lookbehind: true,
+ inside: {
+ keyword: /^property/,
+ property: /\w+(?:\.\w+)*/,
+ },
+ },
+ ],
+ 'javascript-expression': {
+ pattern: RegExp(
+ /(:[ \t]*)(?![\s;}[])(?:(?!$|[;}])<js>)+/.source.replace(
+ /<js>/g,
+ function () {
+ return jsExpr;
+ }
+ ),
+ 'm'
+ ),
+ lookbehind: true,
+ greedy: true,
+ alias: 'language-javascript',
+ inside: Prism.languages.javascript,
+ },
+ string: {
+ pattern: /"(?:\\.|[^\\"\r\n])*"/,
+ greedy: true,
+ },
+ keyword: /\b(?:as|import|on)\b/,
+ punctuation: /[{}[\]:;,]/,
+ };
+})(Prism);