From 532212b26587fc99993ac3d9e5d7468dcb95fcd9 Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Tue, 5 Oct 2021 21:18:09 +0200 Subject: [PATCH] Dataweave: Fixed keywords being highlighted as functions (#3113) --- components/prism-dataweave.js | 2 +- components/prism-dataweave.min.js | 2 +- tests/languages/dataweave/keywords_feature.test | 16 ++++++++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/components/prism-dataweave.js b/components/prism-dataweave.js index 986b3a1c8f..be525e5992 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 52ac90d264..ef2b7f9b76 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 bf163b9026..73d4e58bf0 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"] ] ----------------------------------------------------