datacontract-editor 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +1 -3
  2. package/bin/datacontract-editor.js +73 -29
  3. package/dist/assets/editor.worker-4.7.0.js +30 -9034
  4. package/dist/assets/yaml.worker-4.7.0.js +432 -26435
  5. package/dist/datacontract-editor.css +2 -1
  6. package/dist/datacontract-editor.es.js +82727 -77765
  7. package/dist/monaco-4.7.0.js +114774 -125871
  8. package/dist/rolldown-runtime-DY7j01NX.js +30 -0
  9. package/package.json +20 -12
  10. package/dist/abap-Bs8kvjsq.js +0 -1398
  11. package/dist/apex-Dspwrl5m.js +0 -326
  12. package/dist/azcli-k1BiOau1.js +0 -68
  13. package/dist/bat-BIP72KWc.js +0 -100
  14. package/dist/bicep-VhQeYhS3.js +0 -102
  15. package/dist/cameligo-DnuAXtHg.js +0 -174
  16. package/dist/clojure-BAuDPsal.js +0 -761
  17. package/dist/coffee-BV06qSnj.js +0 -232
  18. package/dist/cpp-Cz8Jeyrf.js +0 -389
  19. package/dist/csharp-F6hhlXFb.js +0 -326
  20. package/dist/csp-KzlEHCyI.js +0 -53
  21. package/dist/css-e4FKntZ3.js +0 -187
  22. package/dist/cssMode-BNkTa2xp.js +0 -1618
  23. package/dist/cypher-CpvDGKRr.js +0 -263
  24. package/dist/dart-DdHeFWR0.js +0 -281
  25. package/dist/dockerfile-aoNXDcio.js +0 -130
  26. package/dist/ecl-C4Q0DYuA.js +0 -456
  27. package/dist/elixir-C9X42b0T.js +0 -569
  28. package/dist/flow9-Bff42pfB.js +0 -142
  29. package/dist/freemarker2-Dyfzmb5A.js +0 -989
  30. package/dist/fsharp-C6vPAsHG.js +0 -217
  31. package/dist/go-DEr8zx9f.js +0 -218
  32. package/dist/graphql-BiNBBRFh.js +0 -151
  33. package/dist/handlebars-BtDNI-uC.js +0 -419
  34. package/dist/hcl-2T9lKuFg.js +0 -183
  35. package/dist/html-Cn4TGw_o.js +0 -308
  36. package/dist/htmlMode-Bf84vbo2.js +0 -1628
  37. package/dist/ini-CZGtssYM.js +0 -71
  38. package/dist/java-B260NeH3.js +0 -232
  39. package/dist/javascript-B86Kac07.js +0 -70
  40. package/dist/jsonMode-Ckgg5lAE.js +0 -2051
  41. package/dist/julia-kuNLM9c5.js +0 -511
  42. package/dist/kotlin-Bz6kAefA.js +0 -253
  43. package/dist/less-AZUtS89I.js +0 -162
  44. package/dist/lexon-BcmgnyRb.js +0 -157
  45. package/dist/liquid-D0NPwuu_.js +0 -240
  46. package/dist/lua-Dz1RbATg.js +0 -162
  47. package/dist/m3-CIMooLFn.js +0 -210
  48. package/dist/markdown-C1BsCK9P.js +0 -229
  49. package/dist/mdx-QFRSBtVQ.js +0 -165
  50. package/dist/mips-BovsnfLQ.js +0 -198
  51. package/dist/msdax-CiRB2ZB-.js +0 -375
  52. package/dist/mysql-BwdpPE19.js +0 -878
  53. package/dist/objective-c-D4nfHfso.js +0 -183
  54. package/dist/pascal--j5-PYtz.js +0 -251
  55. package/dist/pascaligo-C7TcJxNL.js +0 -164
  56. package/dist/perl-BzEWqUb5.js +0 -626
  57. package/dist/pgsql-B_KZ0mGX.js +0 -851
  58. package/dist/php-A19QHzQV.js +0 -500
  59. package/dist/pla-COeKY1hA.js +0 -137
  60. package/dist/postiats-BfMp7zJL.js +0 -907
  61. package/dist/powerquery-B0TS_5Gb.js +0 -890
  62. package/dist/powershell-5jSbKdYB.js +0 -239
  63. package/dist/protobuf-YgnOutn3.js +0 -420
  64. package/dist/pug-DLej6kn5.js +0 -402
  65. package/dist/python-C8RW9B6A.js +0 -301
  66. package/dist/qsharp-AhjqtSHB.js +0 -301
  67. package/dist/r-D-F4P80w.js +0 -243
  68. package/dist/razor-CLZqdY_r.js +0 -550
  69. package/dist/redis-hwwIlMnV.js +0 -302
  70. package/dist/redshift-Bcm_kjEG.js +0 -809
  71. package/dist/restructuredtext-CrdzfPP-.js +0 -174
  72. package/dist/ruby-QC2UNm1s.js +0 -511
  73. package/dist/rust-5aqiQ3L5.js +0 -343
  74. package/dist/sb-B1g1ZfLJ.js +0 -115
  75. package/dist/scala-C2U4R5Gb.js +0 -370
  76. package/dist/scheme-DeFRbslr.js +0 -108
  77. package/dist/scss-RSTCiCmI.js +0 -262
  78. package/dist/shell-BpF-iNu8.js +0 -221
  79. package/dist/solidity-C00r2mbQ.js +0 -1367
  80. package/dist/sophia-DVW5ZKDB.js +0 -199
  81. package/dist/sparql-B0nmpxeX.js +0 -201
  82. package/dist/sql-CJwKPERn.js +0 -853
  83. package/dist/st-DPlKG5DT.js +0 -416
  84. package/dist/swift-YZBAbVHV.js +0 -309
  85. package/dist/systemverilog-CDQSaH63.js +0 -576
  86. package/dist/tcl-Dlu8sp6Q.js +0 -232
  87. package/dist/tsMode-yleMwhPq.js +0 -933
  88. package/dist/twig-C5TO7-kw.js +0 -392
  89. package/dist/typescript-CJBeebKU.js +0 -343
  90. package/dist/typespec-BsmjDEu7.js +0 -117
  91. package/dist/vb-ChHvIDrk.js +0 -372
  92. package/dist/wgsl-XEp1ju8c.js +0 -439
  93. package/dist/xml-vC-NMVX1.js +0 -95
  94. package/dist/yaml-Dlf2VF-T.js +0 -206
@@ -1,569 +0,0 @@
1
- var e = {
2
- comments: {
3
- lineComment: "#"
4
- },
5
- brackets: [
6
- ["{", "}"],
7
- ["[", "]"],
8
- ["(", ")"]
9
- ],
10
- surroundingPairs: [
11
- { open: "{", close: "}" },
12
- { open: "[", close: "]" },
13
- { open: "(", close: ")" },
14
- { open: "'", close: "'" },
15
- { open: '"', close: '"' }
16
- ],
17
- autoClosingPairs: [
18
- { open: "'", close: "'", notIn: ["string", "comment"] },
19
- { open: '"', close: '"', notIn: ["comment"] },
20
- { open: '"""', close: '"""' },
21
- { open: "`", close: "`", notIn: ["string", "comment"] },
22
- { open: "(", close: ")" },
23
- { open: "{", close: "}" },
24
- { open: "[", close: "]" },
25
- { open: "<<", close: ">>" }
26
- ],
27
- indentationRules: {
28
- increaseIndentPattern: /^\s*(after|else|catch|rescue|fn|[^#]*(do|<\-|\->|\{|\[|\=))\s*$/,
29
- decreaseIndentPattern: /^\s*((\}|\])\s*$|(after|else|catch|rescue|end)\b)/
30
- }
31
- }, t = {
32
- defaultToken: "source",
33
- tokenPostfix: ".elixir",
34
- brackets: [
35
- { open: "[", close: "]", token: "delimiter.square" },
36
- { open: "(", close: ")", token: "delimiter.parenthesis" },
37
- { open: "{", close: "}", token: "delimiter.curly" },
38
- { open: "<<", close: ">>", token: "delimiter.angle.special" }
39
- ],
40
- // Below are lists/regexps to which we reference later.
41
- declarationKeywords: [
42
- "def",
43
- "defp",
44
- "defn",
45
- "defnp",
46
- "defguard",
47
- "defguardp",
48
- "defmacro",
49
- "defmacrop",
50
- "defdelegate",
51
- "defcallback",
52
- "defmacrocallback",
53
- "defmodule",
54
- "defprotocol",
55
- "defexception",
56
- "defimpl",
57
- "defstruct"
58
- ],
59
- operatorKeywords: ["and", "in", "not", "or", "when"],
60
- namespaceKeywords: ["alias", "import", "require", "use"],
61
- otherKeywords: [
62
- "after",
63
- "case",
64
- "catch",
65
- "cond",
66
- "do",
67
- "else",
68
- "end",
69
- "fn",
70
- "for",
71
- "if",
72
- "quote",
73
- "raise",
74
- "receive",
75
- "rescue",
76
- "super",
77
- "throw",
78
- "try",
79
- "unless",
80
- "unquote_splicing",
81
- "unquote",
82
- "with"
83
- ],
84
- constants: ["true", "false", "nil"],
85
- nameBuiltin: ["__MODULE__", "__DIR__", "__ENV__", "__CALLER__", "__STACKTRACE__"],
86
- // Matches any of the operator names:
87
- // <<< >>> ||| &&& ^^^ ~~~ === !== ~>> <~> |~> <|> == != <= >= && || \\ <> ++ -- |> =~ -> <- ~> <~ :: .. = < > + - * / | . ^ & !
88
- operator: /-[->]?|!={0,2}|\*{1,2}|\/|\\\\|&{1,3}|\.\.?|\^(?:\^\^)?|\+\+?|<(?:-|<<|=|>|\|>|~>?)?|=~|={1,3}|>(?:=|>>)?|\|~>|\|>|\|{1,3}|~>>?|~~~|::/,
89
- // See https://hexdocs.pm/elixir/syntax-reference.html#variables
90
- variableName: /[a-z_][a-zA-Z0-9_]*[?!]?/,
91
- // See https://hexdocs.pm/elixir/syntax-reference.html#atoms
92
- atomName: /[a-zA-Z_][a-zA-Z0-9_@]*[?!]?|@specialAtomName|@operator/,
93
- specialAtomName: /\.\.\.|<<>>|%\{\}|%|\{\}/,
94
- aliasPart: /[A-Z][a-zA-Z0-9_]*/,
95
- moduleName: /@aliasPart(?:\.@aliasPart)*/,
96
- // Sigil pairs are: """ """, ''' ''', " ", ' ', / /, | |, < >, { }, [ ], ( )
97
- sigilSymmetricDelimiter: /"""|'''|"|'|\/|\|/,
98
- sigilStartDelimiter: /@sigilSymmetricDelimiter|<|\{|\[|\(/,
99
- sigilEndDelimiter: /@sigilSymmetricDelimiter|>|\}|\]|\)/,
100
- sigilModifiers: /[a-zA-Z0-9]*/,
101
- decimal: /\d(?:_?\d)*/,
102
- hex: /[0-9a-fA-F](_?[0-9a-fA-F])*/,
103
- octal: /[0-7](_?[0-7])*/,
104
- binary: /[01](_?[01])*/,
105
- // See https://hexdocs.pm/elixir/master/String.html#module-escape-characters
106
- escape: /\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2}|\\./,
107
- // The keys below correspond to tokenizer states.
108
- // We start from the root state and match against its rules
109
- // until we explicitly transition into another state.
110
- // The `include` simply brings in all operations from the given state
111
- // and is useful for improving readability.
112
- tokenizer: {
113
- root: [
114
- { include: "@whitespace" },
115
- { include: "@comments" },
116
- // Keywords start as either an identifier or a string,
117
- // but end with a : so it's important to match this first.
118
- { include: "@keywordsShorthand" },
119
- { include: "@numbers" },
120
- { include: "@identifiers" },
121
- { include: "@strings" },
122
- { include: "@atoms" },
123
- { include: "@sigils" },
124
- { include: "@attributes" },
125
- { include: "@symbols" }
126
- ],
127
- // Whitespace
128
- whitespace: [[/\s+/, "white"]],
129
- // Comments
130
- comments: [[/(#)(.*)/, ["comment.punctuation", "comment"]]],
131
- // Keyword list shorthand
132
- keywordsShorthand: [
133
- [/(@atomName)(:)(\s+)/, ["constant", "constant.punctuation", "white"]],
134
- // Use positive look-ahead to ensure the string is followed by :
135
- // and should be considered a keyword.
136
- [
137
- /"(?=([^"]|#\{.*?\}|\\")*":)/,
138
- { token: "constant.delimiter", next: "@doubleQuotedStringKeyword" }
139
- ],
140
- [
141
- /'(?=([^']|#\{.*?\}|\\')*':)/,
142
- { token: "constant.delimiter", next: "@singleQuotedStringKeyword" }
143
- ]
144
- ],
145
- doubleQuotedStringKeyword: [
146
- [/":/, { token: "constant.delimiter", next: "@pop" }],
147
- { include: "@stringConstantContentInterpol" }
148
- ],
149
- singleQuotedStringKeyword: [
150
- [/':/, { token: "constant.delimiter", next: "@pop" }],
151
- { include: "@stringConstantContentInterpol" }
152
- ],
153
- // Numbers
154
- numbers: [
155
- [/0b@binary/, "number.binary"],
156
- [/0o@octal/, "number.octal"],
157
- [/0x@hex/, "number.hex"],
158
- [/@decimal\.@decimal([eE]-?@decimal)?/, "number.float"],
159
- [/@decimal/, "number"]
160
- ],
161
- // Identifiers
162
- identifiers: [
163
- // Tokenize identifier name in function-like definitions.
164
- // Note: given `def a + b, do: nil`, `a` is not a function name,
165
- // so we use negative look-ahead to ensure there's no operator.
166
- [
167
- /\b(defp?|defnp?|defmacrop?|defguardp?|defdelegate)(\s+)(@variableName)(?!\s+@operator)/,
168
- [
169
- "keyword.declaration",
170
- "white",
171
- {
172
- cases: {
173
- unquote: "keyword",
174
- "@default": "function"
175
- }
176
- }
177
- ]
178
- ],
179
- // Tokenize function calls
180
- [
181
- // In-scope call - an identifier followed by ( or .(
182
- /(@variableName)(?=\s*\.?\s*\()/,
183
- {
184
- cases: {
185
- // Tokenize as keyword in cases like `if(..., do: ..., else: ...)`
186
- "@declarationKeywords": "keyword.declaration",
187
- "@namespaceKeywords": "keyword",
188
- "@otherKeywords": "keyword",
189
- "@default": "function.call"
190
- }
191
- }
192
- ],
193
- [
194
- // Referencing function in a module
195
- /(@moduleName)(\s*)(\.)(\s*)(@variableName)/,
196
- ["type.identifier", "white", "operator", "white", "function.call"]
197
- ],
198
- [
199
- // Referencing function in an Erlang module
200
- /(:)(@atomName)(\s*)(\.)(\s*)(@variableName)/,
201
- ["constant.punctuation", "constant", "white", "operator", "white", "function.call"]
202
- ],
203
- [
204
- // Piping into a function (tokenized separately as it may not have parentheses)
205
- /(\|>)(\s*)(@variableName)/,
206
- [
207
- "operator",
208
- "white",
209
- {
210
- cases: {
211
- "@otherKeywords": "keyword",
212
- "@default": "function.call"
213
- }
214
- }
215
- ]
216
- ],
217
- [
218
- // Function reference passed to another function
219
- /(&)(\s*)(@variableName)/,
220
- ["operator", "white", "function.call"]
221
- ],
222
- // Language keywords, builtins, constants and variables
223
- [
224
- /@variableName/,
225
- {
226
- cases: {
227
- "@declarationKeywords": "keyword.declaration",
228
- "@operatorKeywords": "keyword.operator",
229
- "@namespaceKeywords": "keyword",
230
- "@otherKeywords": "keyword",
231
- "@constants": "constant.language",
232
- "@nameBuiltin": "variable.language",
233
- "_.*": "comment.unused",
234
- "@default": "identifier"
235
- }
236
- }
237
- ],
238
- // Module names
239
- [/@moduleName/, "type.identifier"]
240
- ],
241
- // Strings
242
- strings: [
243
- [/"""/, { token: "string.delimiter", next: "@doubleQuotedHeredoc" }],
244
- [/'''/, { token: "string.delimiter", next: "@singleQuotedHeredoc" }],
245
- [/"/, { token: "string.delimiter", next: "@doubleQuotedString" }],
246
- [/'/, { token: "string.delimiter", next: "@singleQuotedString" }]
247
- ],
248
- doubleQuotedHeredoc: [
249
- [/"""/, { token: "string.delimiter", next: "@pop" }],
250
- { include: "@stringContentInterpol" }
251
- ],
252
- singleQuotedHeredoc: [
253
- [/'''/, { token: "string.delimiter", next: "@pop" }],
254
- { include: "@stringContentInterpol" }
255
- ],
256
- doubleQuotedString: [
257
- [/"/, { token: "string.delimiter", next: "@pop" }],
258
- { include: "@stringContentInterpol" }
259
- ],
260
- singleQuotedString: [
261
- [/'/, { token: "string.delimiter", next: "@pop" }],
262
- { include: "@stringContentInterpol" }
263
- ],
264
- // Atoms
265
- atoms: [
266
- [/(:)(@atomName)/, ["constant.punctuation", "constant"]],
267
- [/:"/, { token: "constant.delimiter", next: "@doubleQuotedStringAtom" }],
268
- [/:'/, { token: "constant.delimiter", next: "@singleQuotedStringAtom" }]
269
- ],
270
- doubleQuotedStringAtom: [
271
- [/"/, { token: "constant.delimiter", next: "@pop" }],
272
- { include: "@stringConstantContentInterpol" }
273
- ],
274
- singleQuotedStringAtom: [
275
- [/'/, { token: "constant.delimiter", next: "@pop" }],
276
- { include: "@stringConstantContentInterpol" }
277
- ],
278
- // Sigils
279
- // See https://elixir-lang.org/getting-started/sigils.html
280
- // Sigils allow for typing values using their textual representation.
281
- // All sigils start with ~ followed by a letter or
282
- // multi-letter uppercase starting at Elixir v1.15.0, indicating sigil type
283
- // and then a delimiter pair enclosing the textual representation.
284
- // Optional modifiers are allowed after the closing delimiter.
285
- // For instance a regular expressions can be written as:
286
- // ~r/foo|bar/ ~r{foo|bar} ~r/foo|bar/g
287
- //
288
- // In general lowercase sigils allow for interpolation
289
- // and escaped characters, whereas uppercase sigils don't
290
- //
291
- // During tokenization we want to distinguish some
292
- // specific sigil types, namely string and regexp,
293
- // so that they cen be themed separately.
294
- //
295
- // To reasonably handle all those combinations we leverage
296
- // dot-separated states, so if we transition to @sigilStart.interpol.s.{.}
297
- // then "sigilStart.interpol.s" state will match and also all
298
- // the individual dot-separated parameters can be accessed.
299
- sigils: [
300
- [/~[a-z]@sigilStartDelimiter/, { token: "@rematch", next: "@sigil.interpol" }],
301
- [/~([A-Z]+)@sigilStartDelimiter/, { token: "@rematch", next: "@sigil.noInterpol" }]
302
- ],
303
- sigil: [
304
- [/~([a-z]|[A-Z]+)\{/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.{.}" }],
305
- [/~([a-z]|[A-Z]+)\[/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.[.]" }],
306
- [/~([a-z]|[A-Z]+)\(/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.(.)" }],
307
- [/~([a-z]|[A-Z]+)\</, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.<.>" }],
308
- [
309
- /~([a-z]|[A-Z]+)(@sigilSymmetricDelimiter)/,
310
- { token: "@rematch", switchTo: "@sigilStart.$S2.$1.$2.$2" }
311
- ]
312
- ],
313
- // The definitions below expect states to be of the form:
314
- //
315
- // sigilStart.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
316
- // sigilContinue.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
317
- //
318
- // The sigilStart state is used only to properly classify the token (as string/regex/sigil)
319
- // and immediately switches to the sigilContinue sate, which handles the actual content
320
- // and waits for the corresponding end delimiter.
321
- "sigilStart.interpol.s": [
322
- [
323
- /~s@sigilStartDelimiter/,
324
- {
325
- token: "string.delimiter",
326
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
327
- }
328
- ]
329
- ],
330
- "sigilContinue.interpol.s": [
331
- [
332
- /(@sigilEndDelimiter)@sigilModifiers/,
333
- {
334
- cases: {
335
- "$1==$S5": { token: "string.delimiter", next: "@pop" },
336
- "@default": "string"
337
- }
338
- }
339
- ],
340
- { include: "@stringContentInterpol" }
341
- ],
342
- "sigilStart.noInterpol.S": [
343
- [
344
- /~S@sigilStartDelimiter/,
345
- {
346
- token: "string.delimiter",
347
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
348
- }
349
- ]
350
- ],
351
- "sigilContinue.noInterpol.S": [
352
- // Ignore escaped sigil end
353
- [/(^|[^\\])\\@sigilEndDelimiter/, "string"],
354
- [
355
- /(@sigilEndDelimiter)@sigilModifiers/,
356
- {
357
- cases: {
358
- "$1==$S5": { token: "string.delimiter", next: "@pop" },
359
- "@default": "string"
360
- }
361
- }
362
- ],
363
- { include: "@stringContent" }
364
- ],
365
- "sigilStart.interpol.r": [
366
- [
367
- /~r@sigilStartDelimiter/,
368
- {
369
- token: "regexp.delimiter",
370
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
371
- }
372
- ]
373
- ],
374
- "sigilContinue.interpol.r": [
375
- [
376
- /(@sigilEndDelimiter)@sigilModifiers/,
377
- {
378
- cases: {
379
- "$1==$S5": { token: "regexp.delimiter", next: "@pop" },
380
- "@default": "regexp"
381
- }
382
- }
383
- ],
384
- { include: "@regexpContentInterpol" }
385
- ],
386
- "sigilStart.noInterpol.R": [
387
- [
388
- /~R@sigilStartDelimiter/,
389
- {
390
- token: "regexp.delimiter",
391
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
392
- }
393
- ]
394
- ],
395
- "sigilContinue.noInterpol.R": [
396
- // Ignore escaped sigil end
397
- [/(^|[^\\])\\@sigilEndDelimiter/, "regexp"],
398
- [
399
- /(@sigilEndDelimiter)@sigilModifiers/,
400
- {
401
- cases: {
402
- "$1==$S5": { token: "regexp.delimiter", next: "@pop" },
403
- "@default": "regexp"
404
- }
405
- }
406
- ],
407
- { include: "@regexpContent" }
408
- ],
409
- // Fallback to the generic sigil by default
410
- "sigilStart.interpol": [
411
- [
412
- /~([a-z]|[A-Z]+)@sigilStartDelimiter/,
413
- {
414
- token: "sigil.delimiter",
415
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
416
- }
417
- ]
418
- ],
419
- "sigilContinue.interpol": [
420
- [
421
- /(@sigilEndDelimiter)@sigilModifiers/,
422
- {
423
- cases: {
424
- "$1==$S5": { token: "sigil.delimiter", next: "@pop" },
425
- "@default": "sigil"
426
- }
427
- }
428
- ],
429
- { include: "@sigilContentInterpol" }
430
- ],
431
- "sigilStart.noInterpol": [
432
- [
433
- /~([a-z]|[A-Z]+)@sigilStartDelimiter/,
434
- {
435
- token: "sigil.delimiter",
436
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
437
- }
438
- ]
439
- ],
440
- "sigilContinue.noInterpol": [
441
- // Ignore escaped sigil end
442
- [/(^|[^\\])\\@sigilEndDelimiter/, "sigil"],
443
- [
444
- /(@sigilEndDelimiter)@sigilModifiers/,
445
- {
446
- cases: {
447
- "$1==$S5": { token: "sigil.delimiter", next: "@pop" },
448
- "@default": "sigil"
449
- }
450
- }
451
- ],
452
- { include: "@sigilContent" }
453
- ],
454
- // Attributes
455
- attributes: [
456
- // Module @doc* attributes - tokenized as comments
457
- [
458
- /\@(module|type)?doc (~[sS])?"""/,
459
- {
460
- token: "comment.block.documentation",
461
- next: "@doubleQuotedHeredocDocstring"
462
- }
463
- ],
464
- [
465
- /\@(module|type)?doc (~[sS])?'''/,
466
- {
467
- token: "comment.block.documentation",
468
- next: "@singleQuotedHeredocDocstring"
469
- }
470
- ],
471
- [
472
- /\@(module|type)?doc (~[sS])?"/,
473
- {
474
- token: "comment.block.documentation",
475
- next: "@doubleQuotedStringDocstring"
476
- }
477
- ],
478
- [
479
- /\@(module|type)?doc (~[sS])?'/,
480
- {
481
- token: "comment.block.documentation",
482
- next: "@singleQuotedStringDocstring"
483
- }
484
- ],
485
- [/\@(module|type)?doc false/, "comment.block.documentation"],
486
- // Module attributes
487
- [/\@(@variableName)/, "variable"]
488
- ],
489
- doubleQuotedHeredocDocstring: [
490
- [/"""/, { token: "comment.block.documentation", next: "@pop" }],
491
- { include: "@docstringContent" }
492
- ],
493
- singleQuotedHeredocDocstring: [
494
- [/'''/, { token: "comment.block.documentation", next: "@pop" }],
495
- { include: "@docstringContent" }
496
- ],
497
- doubleQuotedStringDocstring: [
498
- [/"/, { token: "comment.block.documentation", next: "@pop" }],
499
- { include: "@docstringContent" }
500
- ],
501
- singleQuotedStringDocstring: [
502
- [/'/, { token: "comment.block.documentation", next: "@pop" }],
503
- { include: "@docstringContent" }
504
- ],
505
- // Operators, punctuation, brackets
506
- symbols: [
507
- // Code point operator (either with regular character ?a or an escaped one ?\n)
508
- [/\?(\\.|[^\\\s])/, "number.constant"],
509
- // Anonymous function arguments
510
- [/&\d+/, "operator"],
511
- // Bitshift operators (must go before delimiters, so that << >> don't match first)
512
- [/<<<|>>>/, "operator"],
513
- // Delimiter pairs
514
- [/[()\[\]\{\}]|<<|>>/, "@brackets"],
515
- // Triple dot is a valid name (must go before operators, so that .. doesn't match instead)
516
- [/\.\.\./, "identifier"],
517
- // Punctuation => (must go before operators, so it's not tokenized as = then >)
518
- [/=>/, "punctuation"],
519
- // Operators
520
- [/@operator/, "operator"],
521
- // Punctuation
522
- [/[:;,.%]/, "punctuation"]
523
- ],
524
- // Generic helpers
525
- stringContentInterpol: [
526
- { include: "@interpolation" },
527
- { include: "@escapeChar" },
528
- { include: "@stringContent" }
529
- ],
530
- stringContent: [[/./, "string"]],
531
- stringConstantContentInterpol: [
532
- { include: "@interpolation" },
533
- { include: "@escapeChar" },
534
- { include: "@stringConstantContent" }
535
- ],
536
- stringConstantContent: [[/./, "constant"]],
537
- regexpContentInterpol: [
538
- { include: "@interpolation" },
539
- { include: "@escapeChar" },
540
- { include: "@regexpContent" }
541
- ],
542
- regexpContent: [
543
- // # may be a regular regexp char, so we use a heuristic
544
- // assuming a # surrounded by whitespace is actually a comment.
545
- [/(\s)(#)(\s.*)$/, ["white", "comment.punctuation", "comment"]],
546
- [/./, "regexp"]
547
- ],
548
- sigilContentInterpol: [
549
- { include: "@interpolation" },
550
- { include: "@escapeChar" },
551
- { include: "@sigilContent" }
552
- ],
553
- sigilContent: [[/./, "sigil"]],
554
- docstringContent: [[/./, "comment.block.documentation"]],
555
- escapeChar: [[/@escape/, "constant.character.escape"]],
556
- interpolation: [[/#{/, { token: "delimiter.bracket.embed", next: "@interpolationContinue" }]],
557
- interpolationContinue: [
558
- [/}/, { token: "delimiter.bracket.embed", next: "@pop" }],
559
- // Interpolation brackets may contain arbitrary code,
560
- // so we simply match against all the root rules,
561
- // until we reach interpolation end (the above matches).
562
- { include: "@root" }
563
- ]
564
- }
565
- };
566
- export {
567
- e as conf,
568
- t as language
569
- };