Dataweave: Fixed keywords being highlighted as functions (#3113)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
diff --git a/components/prism-dataweave.js b/components/prism-dataweave.js
index 986b3a1..be525e5 100644
--- a/components/prism-dataweave.js
+++ b/components/prism-dataweave.js
@@ -30,12 +30,12 @@
pattern: /\/(?:[^\\\/\r\n]|\\[^\r\n])+\//,
greedy: true
},
+ 'keyword': /\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/,
'function': /\b[A-Z_]\w*(?=\s*\()/i,
'number': /-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,
'punctuation': /[{}[\];(),.:@]/,
'operator': /<<|>>|->|[<>~=]=?|!=|--?-?|\+\+?|!|\?/,
'boolean': /\b(?:false|true)\b/,
- 'keyword': /\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/
};
}(Prism));
diff --git a/components/prism-dataweave.min.js b/components/prism-dataweave.min.js
index 52ac90d..ef2b7f9 100644
--- a/components/prism-dataweave.min.js
+++ b/components/prism-dataweave.min.js
@@ -1 +1 @@
-Prism.languages.dataweave={url:/\b[A-Za-z]+:\/\/[\w/:.?=&-]+|\burn:[\w:.?=&-]+/,property:{pattern:/(?:\b\w+#)?(?:"(?:\\.|[^\\"\r\n])*"|\b\w+)(?=\s*[:@])/,greedy:!0},string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},"mime-type":/\b(?:application|audio|image|multipart|text|video)\/[\w+-]+/,date:{pattern:/\|[\w:+-]+\|/,greedy:!0},comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],regex:{pattern:/\/(?:[^\\\/\r\n]|\\[^\r\n])+\//,greedy:!0},function:/\b[A-Z_]\w*(?=\s*\()/i,number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\];(),.:@]/,operator:/<<|>>|->|[<>~=]=?|!=|--?-?|\+\+?|!|\?/,boolean:/\b(?:false|true)\b/,keyword:/\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/};
\ No newline at end of file
+Prism.languages.dataweave={url:/\b[A-Za-z]+:\/\/[\w/:.?=&-]+|\burn:[\w:.?=&-]+/,property:{pattern:/(?:\b\w+#)?(?:"(?:\\.|[^\\"\r\n])*"|\b\w+)(?=\s*[:@])/,greedy:!0},string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},"mime-type":/\b(?:application|audio|image|multipart|text|video)\/[\w+-]+/,date:{pattern:/\|[\w:+-]+\|/,greedy:!0},comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],regex:{pattern:/\/(?:[^\\\/\r\n]|\\[^\r\n])+\//,greedy:!0},keyword:/\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/,function:/\b[A-Z_]\w*(?=\s*\()/i,number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\];(),.:@]/,operator:/<<|>>|->|[<>~=]=?|!=|--?-?|\+\+?|!|\?/,boolean:/\b(?:false|true)\b/};
\ No newline at end of file
diff --git a/tests/languages/dataweave/keywords_feature.test b/tests/languages/dataweave/keywords_feature.test
index bf163b9..73d4e58 100644
--- a/tests/languages/dataweave/keywords_feature.test
+++ b/tests/languages/dataweave/keywords_feature.test
@@ -15,11 +15,15 @@ update {
if(true or false and not true) do {
}
-else
+else
payload match {
case a is String -> x as String
}
+null
+unless
+using
+
----------------------------------------------------
[
@@ -89,7 +93,7 @@ payload match {
["punctuation", "}"],
- ["function", "if"],
+ ["keyword", "if"],
["punctuation", "("],
["boolean", "true"],
["keyword", "or"],
@@ -105,7 +109,7 @@ payload match {
["keyword", "else"],
- " \r\npayload ",
+ "\r\npayload ",
["keyword", "match"],
["punctuation", "{"],
@@ -118,7 +122,11 @@ payload match {
["keyword", "as"],
" String\r\n",
- ["punctuation", "}"]
+ ["punctuation", "}"],
+
+ ["keyword", "null"],
+ ["keyword", "unless"],
+ ["keyword", "using"]
]
----------------------------------------------------