Skip to content

Commit ad3c9b3

Browse files
committed
Support infix notations
1 parent 362f466 commit ad3c9b3

15 files changed

+1674
-104
lines changed

DataWeave.YAML-tmLanguage

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ repository:
3737
variable-reference:
3838
patterns:
3939
- name: variable.other.dw
40-
match: \b(?!(fun|input|output|type|var|ns|import|%dw|private|---)\s)((\+\+|\-\-|[A-Za-z])[a-zA-Z0-9_]*)
40+
match: \b(?!(fun|input|output|type|var|ns|import|%dw|private|---)\b)((\+\+|\-\-|[A-Za-z])[a-zA-Z0-9_]*)
41+
- name: invalid
42+
match: \b(fun|input|output|type|var|ns|import|private)\b
4143
- name: variable.parameter.dw
4244
match: (\$+)
4345

@@ -127,9 +129,16 @@ repository:
127129
'2': {name: comment.dw}
128130
end: (?=\n)
129131

132+
infix:
133+
name: support.function.dw
134+
# match: (?<!^,|\[|\(|=|\+|>|<|\-|\*|:|\{|case|is|else|not)[ \t]*(?!(var|match|case|else|fun|input|output|is|as|default|ns|import|null|false|true|using|do|not|and|or)\b)(\+\+|\-\-|[a-zA-Z][a-zA-Z_0-9]*)\b(?![,\)}\]\n])
135+
match: (?<!^|,|\[|\(|=|\+|>|<|\-|\*|:|\{|case|is|else|not|as|and|or)(?<=[a-zA-Z0-9_$\}\])"'`|/])\s*(?!(var|match|case|else|fun|input|output|is|as|default|ns|import|null|false|true|using|do|not|and|or)\s)(\+\+|\-\-|[a-zA-Z][a-zA-Z_0-9]*)(\s+|\s*(?=["'/|{]))
136+
130137
expressions:
131138
name: expression
132139
patterns:
140+
- name: keyword.other.dw
141+
match: \b(not)\s+
133142
- include: '#paren-expression'
134143
- include: '#strings'
135144
- include: '#constants'
@@ -147,6 +156,7 @@ repository:
147156
- include: '#variable-reference'
148157
- include: '#selectors'
149158
- include: '#directives'
159+
- include: '#infix'
150160

151161

152162
generics:
@@ -170,7 +180,7 @@ repository:
170180
end: (?=\n)
171181
beginCaptures:
172182
'1': {name: storage.type.dw}
173-
'2': {name: variable.language.dw}
183+
'2': {name: entity.name.variable.dw}
174184
patterns:
175185
- begin: (\:\s*)
176186
beginCaptures:
@@ -185,26 +195,24 @@ repository:
185195

186196
keywords:
187197
patterns:
188-
- name: support.function.dw
189-
match: \s(match)\s(?!\{)
190-
- name: support.function.dw
191-
match: (?<!case)\s*\b(matches)\b
192-
- name: support.function.dw
193-
match: \b(abs|avg|ceil|contains|distinctBy|endsWith|filter|find|flatten|floor|groupBy|isBlank|isDecimal|isEmpty|isEven|isInteger|isLeapYear|isOdd|joinBy|log|lower|map|mapObject|max|maxBy|min|minBy|mod|native|now|orderBy|orderBy|pluck|pluck|pow|random|read|readUrl|reduce|reduce|replace|round|scan|sizeOf|splitBy|sqrt|startsWith|sum|to|trim|typeOf|unzip|upper|with|write|zip)\b
198+
#- name: support.function.dw
199+
# match: \b(abs|avg|ceil|contains|distinctBy|endsWith|filter|find|flatten|floor|groupBy|isBlank|isDecimal|isEmpty|isEven|isInteger|isLeapYear|isOdd|joinBy|log|lower|map|mapObject|max|maxBy|min|minBy|mod|native|now|orderBy|orderBy|pluck|pluck|pow|random|read|readUrl|reduce|reduce|replace|round|scan|sizeOf|splitBy|sqrt|startsWith|sum|to|trim|typeOf|unzip|upper|with|write|zip)\b
194200
- name: keyword.reserved.dw
195-
match: \b(throw|do|for|yield|enum|private|async)\b
201+
match: \b(throw|for|yield|enum|private|async)\b
202+
- name: invalid
203+
match: \b(not)\b
196204
- name: keyword.control.dw
197205
match: \b(if|else|while|for|do|using|unless|default)\b
198206
- name: keyword.operator.comparison.dw
199-
match: (~=|==|!=|===|!==|<=|>=|<|>)
207+
match: (~=|==|!=|!=|<=|>=|<|>)
200208
- name: keyword.operator.assignment.dw
201209
match: (=)
202210
- name: keyword.operator.declaration.dw
203211
match: (:)
204212
- name: keyword.operator.arithmetic.dw
205213
match: (\-|\+|\*|\/)
206214
- name: keyword.other.dw
207-
match: \b(not|and|or)\b
215+
match: \b(and|or)\b
208216

209217
match-block:
210218
name: match-block.expr.dw

DataWeave.tmLanguage

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,13 @@
107107
<key>name</key>
108108
<string>variable.other.dw</string>
109109
<key>match</key>
110-
<string>\b(?!(fun|input|output|type|var|ns|import|%dw|private|---)\s)((\+\+|\-\-|[A-Za-z])[a-zA-Z0-9_]*)</string>
110+
<string>\b(?!(fun|input|output|type|var|ns|import|%dw|private|---)\b)((\+\+|\-\-|[A-Za-z])[a-zA-Z0-9_]*)</string>
111+
</dict>
112+
<dict>
113+
<key>name</key>
114+
<string>invalid</string>
115+
<key>match</key>
116+
<string>\b(fun|input|output|type|var|ns|import|private)\b</string>
111117
</dict>
112118
<dict>
113119
<key>name</key>
@@ -382,12 +388,25 @@
382388
<key>end</key>
383389
<string>(?=\n)</string>
384390
</dict>
391+
<key>infix</key>
392+
<dict>
393+
<key>name</key>
394+
<string>support.function.dw</string>
395+
<key>match</key>
396+
<string>(?&lt;!^|,|\[|\(|=|\+|&gt;|&lt;|\-|\*|:|\{|case|is|else|not|as|and|or)(?&lt;=[a-zA-Z0-9_$\}\])"'`|/])\s*(?!(var|match|case|else|fun|input|output|is|as|default|ns|import|null|false|true|using|do|not|and|or)\s)(\+\+|\-\-|[a-zA-Z][a-zA-Z_0-9]*)(\s+|\s*(?=["'/|{]))</string>
397+
</dict>
385398
<key>expressions</key>
386399
<dict>
387400
<key>name</key>
388401
<string>expression</string>
389402
<key>patterns</key>
390403
<array>
404+
<dict>
405+
<key>name</key>
406+
<string>keyword.other.dw</string>
407+
<key>match</key>
408+
<string>\b(not)\s+</string>
409+
</dict>
391410
<dict>
392411
<key>include</key>
393412
<string>#paren-expression</string>
@@ -456,6 +475,10 @@
456475
<key>include</key>
457476
<string>#directives</string>
458477
</dict>
478+
<dict>
479+
<key>include</key>
480+
<string>#infix</string>
481+
</dict>
459482
</array>
460483
</dict>
461484
<key>generics</key>
@@ -519,7 +542,7 @@
519542
<key>2</key>
520543
<dict>
521544
<key>name</key>
522-
<string>variable.language.dw</string>
545+
<string>entity.name.variable.dw</string>
523546
</dict>
524547
</dict>
525548
<key>patterns</key>
@@ -559,27 +582,15 @@
559582
<array>
560583
<dict>
561584
<key>name</key>
562-
<string>support.function.dw</string>
563-
<key>match</key>
564-
<string>\s(match)\s(?!\{)</string>
565-
</dict>
566-
<dict>
567-
<key>name</key>
568-
<string>support.function.dw</string>
569-
<key>match</key>
570-
<string>(?&lt;!case)\s*\b(matches)\b</string>
571-
</dict>
572-
<dict>
573-
<key>name</key>
574-
<string>support.function.dw</string>
585+
<string>keyword.reserved.dw</string>
575586
<key>match</key>
576-
<string>\b(abs|avg|ceil|contains|distinctBy|endsWith|filter|find|flatten|floor|groupBy|isBlank|isDecimal|isEmpty|isEven|isInteger|isLeapYear|isOdd|joinBy|log|lower|map|mapObject|max|maxBy|min|minBy|mod|native|now|orderBy|orderBy|pluck|pluck|pow|random|read|readUrl|reduce|reduce|replace|round|scan|sizeOf|splitBy|sqrt|startsWith|sum|to|trim|typeOf|unzip|upper|with|write|zip)\b</string>
587+
<string>\b(throw|for|yield|enum|private|async)\b</string>
577588
</dict>
578589
<dict>
579590
<key>name</key>
580-
<string>keyword.reserved.dw</string>
591+
<string>invalid</string>
581592
<key>match</key>
582-
<string>\b(throw|do|for|yield|enum|private|async)\b</string>
593+
<string>\b(not)\b</string>
583594
</dict>
584595
<dict>
585596
<key>name</key>
@@ -591,7 +602,7 @@
591602
<key>name</key>
592603
<string>keyword.operator.comparison.dw</string>
593604
<key>match</key>
594-
<string>(~=|==|!=|===|!==|&lt;=|&gt;=|&lt;|&gt;)</string>
605+
<string>(~=|==|!=|!=|&lt;=|&gt;=|&lt;|&gt;)</string>
595606
</dict>
596607
<dict>
597608
<key>name</key>
@@ -615,7 +626,7 @@
615626
<key>name</key>
616627
<string>keyword.other.dw</string>
617628
<key>match</key>
618-
<string>\b(not|and|or)\b</string>
629+
<string>\b(and|or)\b</string>
619630
</dict>
620631
</array>
621632
</dict>

0 commit comments

Comments
 (0)