Commit 532212b26587fc99993ac3d9e5d7468dcb95fcd9

Michael Schmidt 2021-10-05T21:18:09

Dataweave: Fixed keywords being highlighted as functions (#3113)

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"]
 ]
 
 ----------------------------------------------------