@kong-ui-public/monaco-editor 0.3.0 → 0.3.1-pr.2622.ca1f578c8.0

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 (112) hide show
  1. package/package.json +1 -1
  2. package/dist/abap-CrvW7_qN.js +0 -1398
  3. package/dist/apex-BAOI8p1v.js +0 -327
  4. package/dist/assets/css.worker-Cb0JI69t.js +0 -93
  5. package/dist/assets/editor.worker-DzMH9hFo.js +0 -26
  6. package/dist/assets/html.worker-BNFZMwEc.js +0 -470
  7. package/dist/assets/json.worker-BCybXpia.js +0 -58
  8. package/dist/assets/ts.worker-DAVh1bw1.js +0 -67731
  9. package/dist/azcli-BlCk_UqW.js +0 -68
  10. package/dist/bat-DPoEelVx.js +0 -100
  11. package/dist/bicep-Cp1F394l.js +0 -102
  12. package/dist/cameligo-CWqtSlQs.js +0 -174
  13. package/dist/clojure-CKBp32Gf.js +0 -761
  14. package/dist/coffee-CDo6vc-J.js +0 -232
  15. package/dist/cpp-DokufPgf.js +0 -389
  16. package/dist/csharp-BQi3szM0.js +0 -326
  17. package/dist/csp-BSGtCCZ-.js +0 -53
  18. package/dist/css-DEPFDJfb.js +0 -187
  19. package/dist/cssMode-BoaW_8EY.js +0 -141
  20. package/dist/cypher-DAb1vOxS.js +0 -263
  21. package/dist/dart-C8p4jewR.js +0 -281
  22. package/dist/dockerfile-DP0iLFPN.js +0 -130
  23. package/dist/ecl-BDQHA6fi.js +0 -456
  24. package/dist/elixir-D4II6kDM.js +0 -569
  25. package/dist/flow9-StcnL-VB.js +0 -142
  26. package/dist/freemarker2-DLxAEbra.js +0 -982
  27. package/dist/fsharp-DdUVp3EN.js +0 -217
  28. package/dist/go-D1-I258M.js +0 -218
  29. package/dist/graphql-DWkL3f8U.js +0 -151
  30. package/dist/handlebars-H1fAc7pY.js +0 -412
  31. package/dist/hcl-D_0MNifv.js +0 -183
  32. package/dist/html-Bjh5RSoV.js +0 -301
  33. package/dist/htmlMode-XE4-FvOp.js +0 -152
  34. package/dist/index-BtAApC8Z.js +0 -129109
  35. package/dist/ini-C4I2-MT7.js +0 -71
  36. package/dist/java-OBvaP_SS.js +0 -232
  37. package/dist/javascript-BL-y8a3N.js +0 -70
  38. package/dist/jsonMode-BO164Oml.js +0 -569
  39. package/dist/julia-BmDH8Kkf.js +0 -511
  40. package/dist/kotlin-Dhu5AGOD.js +0 -252
  41. package/dist/less-CzmjXREq.js +0 -162
  42. package/dist/lexon-CV2c4pN9.js +0 -157
  43. package/dist/liquid-B4OW2xCW.js +0 -233
  44. package/dist/lspLanguageFeatures-CLOLvtro.js +0 -1458
  45. package/dist/lua-CFY5U8qF.js +0 -162
  46. package/dist/m3-BL_AnZVh.js +0 -210
  47. package/dist/markdown-CWKQPXCv.js +0 -229
  48. package/dist/mdx-BscoYQtT.js +0 -158
  49. package/dist/mips-ButYmJ5E.js +0 -198
  50. package/dist/monaco-editor.es.js +0 -5
  51. package/dist/monaco-editor.umd.js +0 -1234
  52. package/dist/msdax-C3cnXqDh.js +0 -375
  53. package/dist/mysql-YlSHaf6G.js +0 -878
  54. package/dist/objective-c-Dwnlproe.js +0 -183
  55. package/dist/pascal-UzGbSWEN.js +0 -251
  56. package/dist/pascaligo-CslTgu68.js +0 -164
  57. package/dist/perl-oj6r_mgw.js +0 -626
  58. package/dist/pgsql-DSBO0Mev.js +0 -851
  59. package/dist/php-YzCD--7j.js +0 -500
  60. package/dist/pla-CmylB8vQ.js +0 -137
  61. package/dist/postiats-CLFW5gNY.js +0 -907
  62. package/dist/powerquery-CmOWUvlh.js +0 -890
  63. package/dist/powershell-fHQcmBLK.js +0 -239
  64. package/dist/protobuf-p5BArb-9.js +0 -420
  65. package/dist/pug-gVdUDvqf.js +0 -402
  66. package/dist/python-CdwN88xa.js +0 -294
  67. package/dist/qsharp-DnrWSUlt.js +0 -301
  68. package/dist/r-Cv309K2z.js +0 -243
  69. package/dist/razor-BzIEQn-i.js +0 -543
  70. package/dist/redis-DTcS4wMj.js +0 -302
  71. package/dist/redshift-hLxZVESM.js +0 -809
  72. package/dist/restructuredtext-C898lK4f.js +0 -174
  73. package/dist/ruby-CgKtnJIQ.js +0 -511
  74. package/dist/rust-bj8oxVnh.js +0 -343
  75. package/dist/sb-DWynz26l.js +0 -115
  76. package/dist/scala-BL5z1UEd.js +0 -370
  77. package/dist/scheme-DUJsH6VU.js +0 -108
  78. package/dist/scss-CxjmhvaL.js +0 -262
  79. package/dist/shell-D14Zs1dF.js +0 -221
  80. package/dist/solidity-WyRm-BGK.js +0 -1367
  81. package/dist/sophia-CKk-_Oa5.js +0 -199
  82. package/dist/sparql-DHtmINMZ.js +0 -201
  83. package/dist/sql-Dqaj5JHC.js +0 -853
  84. package/dist/st-Bj2IIaop.js +0 -416
  85. package/dist/style.css +0 -1
  86. package/dist/swift-DwxP72iM.js +0 -312
  87. package/dist/systemverilog-D7wJfuql.js +0 -576
  88. package/dist/tcl-0ApMt-eC.js +0 -232
  89. package/dist/tsMode-Bm7Ao8a0.js +0 -946
  90. package/dist/twig-DxwbdmvQ.js +0 -392
  91. package/dist/types/components/MonacoEditor.vue.d.ts +0 -52
  92. package/dist/types/components/MonacoEditor.vue.d.ts.map +0 -1
  93. package/dist/types/components/MonacoEditorStatusOverlay.vue.d.ts +0 -19
  94. package/dist/types/components/MonacoEditorStatusOverlay.vue.d.ts.map +0 -1
  95. package/dist/types/composables/useI18n.d.ts +0 -9
  96. package/dist/types/composables/useI18n.d.ts.map +0 -1
  97. package/dist/types/composables/useMonacoEditor.d.ts +0 -25
  98. package/dist/types/composables/useMonacoEditor.d.ts.map +0 -1
  99. package/dist/types/constants/index.d.ts +0 -3
  100. package/dist/types/constants/index.d.ts.map +0 -1
  101. package/dist/types/index.d.ts +0 -5
  102. package/dist/types/index.d.ts.map +0 -1
  103. package/dist/types/tests/mocks/monaco-editor-api.d.ts +0 -2
  104. package/dist/types/tests/mocks/monaco-editor-api.d.ts.map +0 -1
  105. package/dist/types/types/index.d.ts +0 -69
  106. package/dist/types/types/index.d.ts.map +0 -1
  107. package/dist/typescript-xVL7xVgf.js +0 -336
  108. package/dist/typespec-Fd-JwSuS.js +0 -117
  109. package/dist/vb-CxuyYE1I.js +0 -372
  110. package/dist/wgsl-DoEGc31J.js +0 -439
  111. package/dist/xml-5AZvXygb.js +0 -88
  112. package/dist/yaml-BpKYQQZ4.js +0 -199
@@ -1,569 +0,0 @@
1
- const 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
- };