sun-form-v3 1.0.19 → 1.0.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. package/dist/sun-form-v3.es.js +6424 -4
  2. package/dist/sun-form-v3.umd.js +11 -1906
  3. package/package.json +1 -1
  4. package/dist/abap-DfvySaIJ.js +0 -1404
  5. package/dist/apex-B__0irD3.js +0 -332
  6. package/dist/assets/css.worker-OK053IOu.js +0 -84
  7. package/dist/assets/editor.worker-D9iUZyMP.js +0 -11
  8. package/dist/assets/html.worker-CL40hqKM.js +0 -458
  9. package/dist/assets/json.worker-6f9bhSHY.js +0 -42
  10. package/dist/assets/ts.worker-B6g3wjaE.js +0 -37021
  11. package/dist/azcli-CDMGhRmx.js +0 -74
  12. package/dist/bat-0Mk8aqzx.js +0 -106
  13. package/dist/bicep-BBi_I06Z.js +0 -108
  14. package/dist/cameligo-D0G_Zm6X.js +0 -180
  15. package/dist/clojure-o2ZKLeMp.js +0 -767
  16. package/dist/coffee-DOQff5VC.js +0 -238
  17. package/dist/cpp-CQGJnWhD.js +0 -395
  18. package/dist/csharp-C1jLsHl8.js +0 -332
  19. package/dist/csp-C_ttMQaW.js +0 -59
  20. package/dist/css-BC202kVV.js +0 -193
  21. package/dist/cssMode-byBEtz7c.js +0 -1541
  22. package/dist/cypher-DwtEH7Fi.js +0 -269
  23. package/dist/dart-D9XknsP2.js +0 -287
  24. package/dist/dockerfile-DgsNjqqa.js +0 -136
  25. package/dist/ecl-BAMCHBl6.js +0 -462
  26. package/dist/elixir-CegIttP8.js +0 -575
  27. package/dist/flow9-9608t7UV.js +0 -148
  28. package/dist/freemarker2-CW7AHFYr.js +0 -995
  29. package/dist/fsharp-CCtt9-1_.js +0 -223
  30. package/dist/go-CGUIPbct.js +0 -224
  31. package/dist/graphql-BNRIFFIn.js +0 -157
  32. package/dist/handlebars-Db-LwRoq.js +0 -425
  33. package/dist/hcl-C__KLIXe.js +0 -189
  34. package/dist/html-BR_Eac22.js +0 -314
  35. package/dist/htmlMode-BblxUutr.js +0 -1551
  36. package/dist/index-DmlyKQU2.js +0 -150
  37. package/dist/index-LSgHAjqc.js +0 -124464
  38. package/dist/ini-CeKYn_zA.js +0 -77
  39. package/dist/java-Dm24deQl.js +0 -238
  40. package/dist/javascript-CI6tIRWD.js +0 -76
  41. package/dist/jsonMode-DqvjtgUk.js +0 -1957
  42. package/dist/julia-BImNW7VE.js +0 -517
  43. package/dist/kotlin-BfE79GEb.js +0 -259
  44. package/dist/less-DglNOcaC.js +0 -168
  45. package/dist/lexon-BA0dRz9Q.js +0 -163
  46. package/dist/liquid-DUISPe_r.js +0 -246
  47. package/dist/lua-DMkWzJcm.js +0 -168
  48. package/dist/m3-sA-5shO8.js +0 -216
  49. package/dist/markdown-OYRB1igA.js +0 -235
  50. package/dist/mdx-DiKfWoCY.js +0 -171
  51. package/dist/mips-rRzkJ_7G.js +0 -204
  52. package/dist/msdax-DoVJdUhd.js +0 -381
  53. package/dist/mysql-Ty44IHXo.js +0 -884
  54. package/dist/objective-c-VUfyhYrA.js +0 -189
  55. package/dist/pascal-DkASiYyw.js +0 -257
  56. package/dist/pascaligo-p-ELPlVO.js +0 -170
  57. package/dist/perl-Cjl1FxLZ.js +0 -632
  58. package/dist/pgsql-DjVenF7s.js +0 -857
  59. package/dist/php-CwvGzZOO.js +0 -506
  60. package/dist/pla-Br1iaBIV.js +0 -143
  61. package/dist/postiats-BaeP8zZY.js +0 -913
  62. package/dist/powerquery-CLCshuo8.js +0 -896
  63. package/dist/powershell-CZV50w5N.js +0 -245
  64. package/dist/protobuf-MV3XTewJ.js +0 -426
  65. package/dist/pug-DkDg4c4l.js +0 -408
  66. package/dist/python-CCtg48Ov.js +0 -282
  67. package/dist/qsharp-BAtiKA97.js +0 -291
  68. package/dist/r-8ocrd-h-.js +0 -249
  69. package/dist/razor-C166576-.js +0 -556
  70. package/dist/redis-9sZiddxc.js +0 -308
  71. package/dist/redshift-DQfTOGC0.js +0 -815
  72. package/dist/restructuredtext-DXU-vkgr.js +0 -180
  73. package/dist/ruby-DotfqwMf.js +0 -517
  74. package/dist/rust-BIauJ5KN.js +0 -349
  75. package/dist/sb-CmWMvDEV.js +0 -121
  76. package/dist/scala-C81brEbk.js +0 -376
  77. package/dist/scheme-D0pcFz2x.js +0 -114
  78. package/dist/scss-BOdN2fGG.js +0 -268
  79. package/dist/shell-6E09eAkU.js +0 -227
  80. package/dist/solidity-CWStzA1K.js +0 -1373
  81. package/dist/sophia-76Sb6CWe.js +0 -205
  82. package/dist/sparql-BmZTkOWT.js +0 -207
  83. package/dist/sql-Cs9TBAW5.js +0 -859
  84. package/dist/st-B-rqE1Bu.js +0 -422
  85. package/dist/style.css +0 -1
  86. package/dist/swift-Btsj6YxQ.js +0 -318
  87. package/dist/systemverilog-B3RHBRa2.js +0 -582
  88. package/dist/tcl-Dpj776pn.js +0 -238
  89. package/dist/tsMode-Ccp-btAw.js +0 -886
  90. package/dist/twig-Bb9JmBsE.js +0 -398
  91. package/dist/typescript-FobAIugf.js +0 -349
  92. package/dist/typespec-CDWeg3SU.js +0 -123
  93. package/dist/vb-DEXnYwEI.js +0 -378
  94. package/dist/wgsl-D602c1lx.js +0 -445
  95. package/dist/xml-CdCYmaDy.js +0 -101
  96. package/dist/yaml-CpTjByz4.js +0 -212
@@ -1,575 +0,0 @@
1
- /*!-----------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.49.0(383fdf3fc0e1e1a024068b8d0fd4f3dcbae74d04)
4
- * Released under the MIT license
5
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
6
- *-----------------------------------------------------------------------------*/
7
- var e = {
8
- comments: {
9
- lineComment: "#"
10
- },
11
- brackets: [
12
- ["{", "}"],
13
- ["[", "]"],
14
- ["(", ")"]
15
- ],
16
- surroundingPairs: [
17
- { open: "{", close: "}" },
18
- { open: "[", close: "]" },
19
- { open: "(", close: ")" },
20
- { open: "'", close: "'" },
21
- { open: '"', close: '"' }
22
- ],
23
- autoClosingPairs: [
24
- { open: "'", close: "'", notIn: ["string", "comment"] },
25
- { open: '"', close: '"', notIn: ["comment"] },
26
- { open: '"""', close: '"""' },
27
- { open: "`", close: "`", notIn: ["string", "comment"] },
28
- { open: "(", close: ")" },
29
- { open: "{", close: "}" },
30
- { open: "[", close: "]" },
31
- { open: "<<", close: ">>" }
32
- ],
33
- indentationRules: {
34
- increaseIndentPattern: /^\s*(after|else|catch|rescue|fn|[^#]*(do|<\-|\->|\{|\[|\=))\s*$/,
35
- decreaseIndentPattern: /^\s*((\}|\])\s*$|(after|else|catch|rescue|end)\b)/
36
- }
37
- }, t = {
38
- defaultToken: "source",
39
- tokenPostfix: ".elixir",
40
- brackets: [
41
- { open: "[", close: "]", token: "delimiter.square" },
42
- { open: "(", close: ")", token: "delimiter.parenthesis" },
43
- { open: "{", close: "}", token: "delimiter.curly" },
44
- { open: "<<", close: ">>", token: "delimiter.angle.special" }
45
- ],
46
- // Below are lists/regexps to which we reference later.
47
- declarationKeywords: [
48
- "def",
49
- "defp",
50
- "defn",
51
- "defnp",
52
- "defguard",
53
- "defguardp",
54
- "defmacro",
55
- "defmacrop",
56
- "defdelegate",
57
- "defcallback",
58
- "defmacrocallback",
59
- "defmodule",
60
- "defprotocol",
61
- "defexception",
62
- "defimpl",
63
- "defstruct"
64
- ],
65
- operatorKeywords: ["and", "in", "not", "or", "when"],
66
- namespaceKeywords: ["alias", "import", "require", "use"],
67
- otherKeywords: [
68
- "after",
69
- "case",
70
- "catch",
71
- "cond",
72
- "do",
73
- "else",
74
- "end",
75
- "fn",
76
- "for",
77
- "if",
78
- "quote",
79
- "raise",
80
- "receive",
81
- "rescue",
82
- "super",
83
- "throw",
84
- "try",
85
- "unless",
86
- "unquote_splicing",
87
- "unquote",
88
- "with"
89
- ],
90
- constants: ["true", "false", "nil"],
91
- nameBuiltin: ["__MODULE__", "__DIR__", "__ENV__", "__CALLER__", "__STACKTRACE__"],
92
- // Matches any of the operator names:
93
- // <<< >>> ||| &&& ^^^ ~~~ === !== ~>> <~> |~> <|> == != <= >= && || \\ <> ++ -- |> =~ -> <- ~> <~ :: .. = < > + - * / | . ^ & !
94
- operator: /-[->]?|!={0,2}|\*{1,2}|\/|\\\\|&{1,3}|\.\.?|\^(?:\^\^)?|\+\+?|<(?:-|<<|=|>|\|>|~>?)?|=~|={1,3}|>(?:=|>>)?|\|~>|\|>|\|{1,3}|~>>?|~~~|::/,
95
- // See https://hexdocs.pm/elixir/syntax-reference.html#variables
96
- variableName: /[a-z_][a-zA-Z0-9_]*[?!]?/,
97
- // See https://hexdocs.pm/elixir/syntax-reference.html#atoms
98
- atomName: /[a-zA-Z_][a-zA-Z0-9_@]*[?!]?|@specialAtomName|@operator/,
99
- specialAtomName: /\.\.\.|<<>>|%\{\}|%|\{\}/,
100
- aliasPart: /[A-Z][a-zA-Z0-9_]*/,
101
- moduleName: /@aliasPart(?:\.@aliasPart)*/,
102
- // Sigil pairs are: """ """, ''' ''', " ", ' ', / /, | |, < >, { }, [ ], ( )
103
- sigilSymmetricDelimiter: /"""|'''|"|'|\/|\|/,
104
- sigilStartDelimiter: /@sigilSymmetricDelimiter|<|\{|\[|\(/,
105
- sigilEndDelimiter: /@sigilSymmetricDelimiter|>|\}|\]|\)/,
106
- sigilModifiers: /[a-zA-Z0-9]*/,
107
- decimal: /\d(?:_?\d)*/,
108
- hex: /[0-9a-fA-F](_?[0-9a-fA-F])*/,
109
- octal: /[0-7](_?[0-7])*/,
110
- binary: /[01](_?[01])*/,
111
- // See https://hexdocs.pm/elixir/master/String.html#module-escape-characters
112
- escape: /\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2}|\\./,
113
- // The keys below correspond to tokenizer states.
114
- // We start from the root state and match against its rules
115
- // until we explicitly transition into another state.
116
- // The `include` simply brings in all operations from the given state
117
- // and is useful for improving readability.
118
- tokenizer: {
119
- root: [
120
- { include: "@whitespace" },
121
- { include: "@comments" },
122
- // Keywords start as either an identifier or a string,
123
- // but end with a : so it's important to match this first.
124
- { include: "@keywordsShorthand" },
125
- { include: "@numbers" },
126
- { include: "@identifiers" },
127
- { include: "@strings" },
128
- { include: "@atoms" },
129
- { include: "@sigils" },
130
- { include: "@attributes" },
131
- { include: "@symbols" }
132
- ],
133
- // Whitespace
134
- whitespace: [[/\s+/, "white"]],
135
- // Comments
136
- comments: [[/(#)(.*)/, ["comment.punctuation", "comment"]]],
137
- // Keyword list shorthand
138
- keywordsShorthand: [
139
- [/(@atomName)(:)(\s+)/, ["constant", "constant.punctuation", "white"]],
140
- // Use positive look-ahead to ensure the string is followed by :
141
- // and should be considered a keyword.
142
- [
143
- /"(?=([^"]|#\{.*?\}|\\")*":)/,
144
- { token: "constant.delimiter", next: "@doubleQuotedStringKeyword" }
145
- ],
146
- [
147
- /'(?=([^']|#\{.*?\}|\\')*':)/,
148
- { token: "constant.delimiter", next: "@singleQuotedStringKeyword" }
149
- ]
150
- ],
151
- doubleQuotedStringKeyword: [
152
- [/":/, { token: "constant.delimiter", next: "@pop" }],
153
- { include: "@stringConstantContentInterpol" }
154
- ],
155
- singleQuotedStringKeyword: [
156
- [/':/, { token: "constant.delimiter", next: "@pop" }],
157
- { include: "@stringConstantContentInterpol" }
158
- ],
159
- // Numbers
160
- numbers: [
161
- [/0b@binary/, "number.binary"],
162
- [/0o@octal/, "number.octal"],
163
- [/0x@hex/, "number.hex"],
164
- [/@decimal\.@decimal([eE]-?@decimal)?/, "number.float"],
165
- [/@decimal/, "number"]
166
- ],
167
- // Identifiers
168
- identifiers: [
169
- // Tokenize identifier name in function-like definitions.
170
- // Note: given `def a + b, do: nil`, `a` is not a function name,
171
- // so we use negative look-ahead to ensure there's no operator.
172
- [
173
- /\b(defp?|defnp?|defmacrop?|defguardp?|defdelegate)(\s+)(@variableName)(?!\s+@operator)/,
174
- [
175
- "keyword.declaration",
176
- "white",
177
- {
178
- cases: {
179
- unquote: "keyword",
180
- "@default": "function"
181
- }
182
- }
183
- ]
184
- ],
185
- // Tokenize function calls
186
- [
187
- // In-scope call - an identifier followed by ( or .(
188
- /(@variableName)(?=\s*\.?\s*\()/,
189
- {
190
- cases: {
191
- // Tokenize as keyword in cases like `if(..., do: ..., else: ...)`
192
- "@declarationKeywords": "keyword.declaration",
193
- "@namespaceKeywords": "keyword",
194
- "@otherKeywords": "keyword",
195
- "@default": "function.call"
196
- }
197
- }
198
- ],
199
- [
200
- // Referencing function in a module
201
- /(@moduleName)(\s*)(\.)(\s*)(@variableName)/,
202
- ["type.identifier", "white", "operator", "white", "function.call"]
203
- ],
204
- [
205
- // Referencing function in an Erlang module
206
- /(:)(@atomName)(\s*)(\.)(\s*)(@variableName)/,
207
- ["constant.punctuation", "constant", "white", "operator", "white", "function.call"]
208
- ],
209
- [
210
- // Piping into a function (tokenized separately as it may not have parentheses)
211
- /(\|>)(\s*)(@variableName)/,
212
- [
213
- "operator",
214
- "white",
215
- {
216
- cases: {
217
- "@otherKeywords": "keyword",
218
- "@default": "function.call"
219
- }
220
- }
221
- ]
222
- ],
223
- [
224
- // Function reference passed to another function
225
- /(&)(\s*)(@variableName)/,
226
- ["operator", "white", "function.call"]
227
- ],
228
- // Language keywords, builtins, constants and variables
229
- [
230
- /@variableName/,
231
- {
232
- cases: {
233
- "@declarationKeywords": "keyword.declaration",
234
- "@operatorKeywords": "keyword.operator",
235
- "@namespaceKeywords": "keyword",
236
- "@otherKeywords": "keyword",
237
- "@constants": "constant.language",
238
- "@nameBuiltin": "variable.language",
239
- "_.*": "comment.unused",
240
- "@default": "identifier"
241
- }
242
- }
243
- ],
244
- // Module names
245
- [/@moduleName/, "type.identifier"]
246
- ],
247
- // Strings
248
- strings: [
249
- [/"""/, { token: "string.delimiter", next: "@doubleQuotedHeredoc" }],
250
- [/'''/, { token: "string.delimiter", next: "@singleQuotedHeredoc" }],
251
- [/"/, { token: "string.delimiter", next: "@doubleQuotedString" }],
252
- [/'/, { token: "string.delimiter", next: "@singleQuotedString" }]
253
- ],
254
- doubleQuotedHeredoc: [
255
- [/"""/, { token: "string.delimiter", next: "@pop" }],
256
- { include: "@stringContentInterpol" }
257
- ],
258
- singleQuotedHeredoc: [
259
- [/'''/, { token: "string.delimiter", next: "@pop" }],
260
- { include: "@stringContentInterpol" }
261
- ],
262
- doubleQuotedString: [
263
- [/"/, { token: "string.delimiter", next: "@pop" }],
264
- { include: "@stringContentInterpol" }
265
- ],
266
- singleQuotedString: [
267
- [/'/, { token: "string.delimiter", next: "@pop" }],
268
- { include: "@stringContentInterpol" }
269
- ],
270
- // Atoms
271
- atoms: [
272
- [/(:)(@atomName)/, ["constant.punctuation", "constant"]],
273
- [/:"/, { token: "constant.delimiter", next: "@doubleQuotedStringAtom" }],
274
- [/:'/, { token: "constant.delimiter", next: "@singleQuotedStringAtom" }]
275
- ],
276
- doubleQuotedStringAtom: [
277
- [/"/, { token: "constant.delimiter", next: "@pop" }],
278
- { include: "@stringConstantContentInterpol" }
279
- ],
280
- singleQuotedStringAtom: [
281
- [/'/, { token: "constant.delimiter", next: "@pop" }],
282
- { include: "@stringConstantContentInterpol" }
283
- ],
284
- // Sigils
285
- // See https://elixir-lang.org/getting-started/sigils.html
286
- // Sigils allow for typing values using their textual representation.
287
- // All sigils start with ~ followed by a letter or
288
- // multi-letter uppercase starting at Elixir v1.15.0, indicating sigil type
289
- // and then a delimiter pair enclosing the textual representation.
290
- // Optional modifiers are allowed after the closing delimiter.
291
- // For instance a regular expressions can be written as:
292
- // ~r/foo|bar/ ~r{foo|bar} ~r/foo|bar/g
293
- //
294
- // In general lowercase sigils allow for interpolation
295
- // and escaped characters, whereas uppercase sigils don't
296
- //
297
- // During tokenization we want to distinguish some
298
- // specific sigil types, namely string and regexp,
299
- // so that they cen be themed separately.
300
- //
301
- // To reasonably handle all those combinations we leverage
302
- // dot-separated states, so if we transition to @sigilStart.interpol.s.{.}
303
- // then "sigilStart.interpol.s" state will match and also all
304
- // the individual dot-separated parameters can be accessed.
305
- sigils: [
306
- [/~[a-z]@sigilStartDelimiter/, { token: "@rematch", next: "@sigil.interpol" }],
307
- [/~([A-Z]+)@sigilStartDelimiter/, { token: "@rematch", next: "@sigil.noInterpol" }]
308
- ],
309
- sigil: [
310
- [/~([a-z]|[A-Z]+)\{/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.{.}" }],
311
- [/~([a-z]|[A-Z]+)\[/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.[.]" }],
312
- [/~([a-z]|[A-Z]+)\(/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.(.)" }],
313
- [/~([a-z]|[A-Z]+)\</, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.<.>" }],
314
- [
315
- /~([a-z]|[A-Z]+)(@sigilSymmetricDelimiter)/,
316
- { token: "@rematch", switchTo: "@sigilStart.$S2.$1.$2.$2" }
317
- ]
318
- ],
319
- // The definitions below expect states to be of the form:
320
- //
321
- // sigilStart.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
322
- // sigilContinue.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
323
- //
324
- // The sigilStart state is used only to properly classify the token (as string/regex/sigil)
325
- // and immediately switches to the sigilContinue sate, which handles the actual content
326
- // and waits for the corresponding end delimiter.
327
- "sigilStart.interpol.s": [
328
- [
329
- /~s@sigilStartDelimiter/,
330
- {
331
- token: "string.delimiter",
332
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
333
- }
334
- ]
335
- ],
336
- "sigilContinue.interpol.s": [
337
- [
338
- /(@sigilEndDelimiter)@sigilModifiers/,
339
- {
340
- cases: {
341
- "$1==$S5": { token: "string.delimiter", next: "@pop" },
342
- "@default": "string"
343
- }
344
- }
345
- ],
346
- { include: "@stringContentInterpol" }
347
- ],
348
- "sigilStart.noInterpol.S": [
349
- [
350
- /~S@sigilStartDelimiter/,
351
- {
352
- token: "string.delimiter",
353
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
354
- }
355
- ]
356
- ],
357
- "sigilContinue.noInterpol.S": [
358
- // Ignore escaped sigil end
359
- [/(^|[^\\])\\@sigilEndDelimiter/, "string"],
360
- [
361
- /(@sigilEndDelimiter)@sigilModifiers/,
362
- {
363
- cases: {
364
- "$1==$S5": { token: "string.delimiter", next: "@pop" },
365
- "@default": "string"
366
- }
367
- }
368
- ],
369
- { include: "@stringContent" }
370
- ],
371
- "sigilStart.interpol.r": [
372
- [
373
- /~r@sigilStartDelimiter/,
374
- {
375
- token: "regexp.delimiter",
376
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
377
- }
378
- ]
379
- ],
380
- "sigilContinue.interpol.r": [
381
- [
382
- /(@sigilEndDelimiter)@sigilModifiers/,
383
- {
384
- cases: {
385
- "$1==$S5": { token: "regexp.delimiter", next: "@pop" },
386
- "@default": "regexp"
387
- }
388
- }
389
- ],
390
- { include: "@regexpContentInterpol" }
391
- ],
392
- "sigilStart.noInterpol.R": [
393
- [
394
- /~R@sigilStartDelimiter/,
395
- {
396
- token: "regexp.delimiter",
397
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
398
- }
399
- ]
400
- ],
401
- "sigilContinue.noInterpol.R": [
402
- // Ignore escaped sigil end
403
- [/(^|[^\\])\\@sigilEndDelimiter/, "regexp"],
404
- [
405
- /(@sigilEndDelimiter)@sigilModifiers/,
406
- {
407
- cases: {
408
- "$1==$S5": { token: "regexp.delimiter", next: "@pop" },
409
- "@default": "regexp"
410
- }
411
- }
412
- ],
413
- { include: "@regexpContent" }
414
- ],
415
- // Fallback to the generic sigil by default
416
- "sigilStart.interpol": [
417
- [
418
- /~([a-z]|[A-Z]+)@sigilStartDelimiter/,
419
- {
420
- token: "sigil.delimiter",
421
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
422
- }
423
- ]
424
- ],
425
- "sigilContinue.interpol": [
426
- [
427
- /(@sigilEndDelimiter)@sigilModifiers/,
428
- {
429
- cases: {
430
- "$1==$S5": { token: "sigil.delimiter", next: "@pop" },
431
- "@default": "sigil"
432
- }
433
- }
434
- ],
435
- { include: "@sigilContentInterpol" }
436
- ],
437
- "sigilStart.noInterpol": [
438
- [
439
- /~([a-z]|[A-Z]+)@sigilStartDelimiter/,
440
- {
441
- token: "sigil.delimiter",
442
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
443
- }
444
- ]
445
- ],
446
- "sigilContinue.noInterpol": [
447
- // Ignore escaped sigil end
448
- [/(^|[^\\])\\@sigilEndDelimiter/, "sigil"],
449
- [
450
- /(@sigilEndDelimiter)@sigilModifiers/,
451
- {
452
- cases: {
453
- "$1==$S5": { token: "sigil.delimiter", next: "@pop" },
454
- "@default": "sigil"
455
- }
456
- }
457
- ],
458
- { include: "@sigilContent" }
459
- ],
460
- // Attributes
461
- attributes: [
462
- // Module @doc* attributes - tokenized as comments
463
- [
464
- /\@(module|type)?doc (~[sS])?"""/,
465
- {
466
- token: "comment.block.documentation",
467
- next: "@doubleQuotedHeredocDocstring"
468
- }
469
- ],
470
- [
471
- /\@(module|type)?doc (~[sS])?'''/,
472
- {
473
- token: "comment.block.documentation",
474
- next: "@singleQuotedHeredocDocstring"
475
- }
476
- ],
477
- [
478
- /\@(module|type)?doc (~[sS])?"/,
479
- {
480
- token: "comment.block.documentation",
481
- next: "@doubleQuotedStringDocstring"
482
- }
483
- ],
484
- [
485
- /\@(module|type)?doc (~[sS])?'/,
486
- {
487
- token: "comment.block.documentation",
488
- next: "@singleQuotedStringDocstring"
489
- }
490
- ],
491
- [/\@(module|type)?doc false/, "comment.block.documentation"],
492
- // Module attributes
493
- [/\@(@variableName)/, "variable"]
494
- ],
495
- doubleQuotedHeredocDocstring: [
496
- [/"""/, { token: "comment.block.documentation", next: "@pop" }],
497
- { include: "@docstringContent" }
498
- ],
499
- singleQuotedHeredocDocstring: [
500
- [/'''/, { token: "comment.block.documentation", next: "@pop" }],
501
- { include: "@docstringContent" }
502
- ],
503
- doubleQuotedStringDocstring: [
504
- [/"/, { token: "comment.block.documentation", next: "@pop" }],
505
- { include: "@docstringContent" }
506
- ],
507
- singleQuotedStringDocstring: [
508
- [/'/, { token: "comment.block.documentation", next: "@pop" }],
509
- { include: "@docstringContent" }
510
- ],
511
- // Operators, punctuation, brackets
512
- symbols: [
513
- // Code point operator (either with regular character ?a or an escaped one ?\n)
514
- [/\?(\\.|[^\\\s])/, "number.constant"],
515
- // Anonymous function arguments
516
- [/&\d+/, "operator"],
517
- // Bitshift operators (must go before delimiters, so that << >> don't match first)
518
- [/<<<|>>>/, "operator"],
519
- // Delimiter pairs
520
- [/[()\[\]\{\}]|<<|>>/, "@brackets"],
521
- // Triple dot is a valid name (must go before operators, so that .. doesn't match instead)
522
- [/\.\.\./, "identifier"],
523
- // Punctuation => (must go before operators, so it's not tokenized as = then >)
524
- [/=>/, "punctuation"],
525
- // Operators
526
- [/@operator/, "operator"],
527
- // Punctuation
528
- [/[:;,.%]/, "punctuation"]
529
- ],
530
- // Generic helpers
531
- stringContentInterpol: [
532
- { include: "@interpolation" },
533
- { include: "@escapeChar" },
534
- { include: "@stringContent" }
535
- ],
536
- stringContent: [[/./, "string"]],
537
- stringConstantContentInterpol: [
538
- { include: "@interpolation" },
539
- { include: "@escapeChar" },
540
- { include: "@stringConstantContent" }
541
- ],
542
- stringConstantContent: [[/./, "constant"]],
543
- regexpContentInterpol: [
544
- { include: "@interpolation" },
545
- { include: "@escapeChar" },
546
- { include: "@regexpContent" }
547
- ],
548
- regexpContent: [
549
- // # may be a regular regexp char, so we use a heuristic
550
- // assuming a # surrounded by whitespace is actually a comment.
551
- [/(\s)(#)(\s.*)$/, ["white", "comment.punctuation", "comment"]],
552
- [/./, "regexp"]
553
- ],
554
- sigilContentInterpol: [
555
- { include: "@interpolation" },
556
- { include: "@escapeChar" },
557
- { include: "@sigilContent" }
558
- ],
559
- sigilContent: [[/./, "sigil"]],
560
- docstringContent: [[/./, "comment.block.documentation"]],
561
- escapeChar: [[/@escape/, "constant.character.escape"]],
562
- interpolation: [[/#{/, { token: "delimiter.bracket.embed", next: "@interpolationContinue" }]],
563
- interpolationContinue: [
564
- [/}/, { token: "delimiter.bracket.embed", next: "@pop" }],
565
- // Interpolation brackets may contain arbitrary code,
566
- // so we simply match against all the root rules,
567
- // until we reach interpolation end (the above matches).
568
- { include: "@root" }
569
- ]
570
- }
571
- };
572
- export {
573
- e as conf,
574
- t as language
575
- };