@kong-ui-public/monaco-editor 0.1.0 → 0.1.2-pr.2609.2ce4f4787.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 (100) hide show
  1. package/dist/abap-D0Neqhq6.js +1404 -0
  2. package/dist/apex-B5LhxkeG.js +332 -0
  3. package/dist/azcli-BrBH0QTU.js +74 -0
  4. package/dist/bat-BfzAov64.js +106 -0
  5. package/dist/bicep-C3bCSWel.js +108 -0
  6. package/dist/cameligo-sFL5plcd.js +180 -0
  7. package/dist/clojure-CfeExRz0.js +767 -0
  8. package/dist/coffee-Xws5K0WL.js +238 -0
  9. package/dist/cpp-CqOUEpxN.js +395 -0
  10. package/dist/csharp-DVLiBOZb.js +332 -0
  11. package/dist/csp-DVFp9bw5.js +59 -0
  12. package/dist/css-DwARn2R6.js +193 -0
  13. package/dist/cssMode-BRHW0OjB.js +1577 -0
  14. package/dist/cypher-uY0Mffat.js +269 -0
  15. package/dist/dart-D27H-mX_.js +287 -0
  16. package/dist/dockerfile-CmV85WZK.js +136 -0
  17. package/dist/ecl--fKn7yzB.js +462 -0
  18. package/dist/editor.main-BVWEsGeM.js +112170 -0
  19. package/dist/elixir-DUhH17ON.js +575 -0
  20. package/dist/flow9-B3Dx2LLe.js +148 -0
  21. package/dist/freemarker2-DrnILGvf.js +995 -0
  22. package/dist/fsharp-SyqBfUAR.js +223 -0
  23. package/dist/go-BbMR2tdT.js +224 -0
  24. package/dist/graphql-DDJE6tIl.js +157 -0
  25. package/dist/handlebars-D2vGkdp7.js +425 -0
  26. package/dist/hcl-YBvpaUqf.js +189 -0
  27. package/dist/html-D3HI-WFO.js +314 -0
  28. package/dist/htmlMode-CNpiDTvN.js +1587 -0
  29. package/dist/ini-Ct73dBtM.js +77 -0
  30. package/dist/java-C_jlkwoG.js +238 -0
  31. package/dist/javascript-DLZMP-Wa.js +76 -0
  32. package/dist/jsonMode-CEQtUpLb.js +2002 -0
  33. package/dist/julia-D8WE5U1e.js +517 -0
  34. package/dist/kotlin-Zy9aq5yB.js +259 -0
  35. package/dist/less-sZ0iHtE8.js +168 -0
  36. package/dist/lexon-CsdNL29A.js +163 -0
  37. package/dist/liquid-CnqLoV0A.js +246 -0
  38. package/dist/lua-C2YJo0zw.js +168 -0
  39. package/dist/m3-CPLP40SG.js +216 -0
  40. package/dist/markdown-B1mf5e0R.js +235 -0
  41. package/dist/mdx-C6hXTTY6.js +171 -0
  42. package/dist/mips-DA33BZX1.js +204 -0
  43. package/dist/monaco-editor.es.js +224 -14
  44. package/dist/monaco-editor.umd.js +1913 -1
  45. package/dist/msdax-CCYFIQsP.js +381 -0
  46. package/dist/mysql-hjmIjL-D.js +884 -0
  47. package/dist/objective-c-RRCpEmqC.js +189 -0
  48. package/dist/pascal-CeV8XfxB.js +257 -0
  49. package/dist/pascaligo-IEEGVJAJ.js +170 -0
  50. package/dist/perl-B5-QbHq_.js +632 -0
  51. package/dist/pgsql-s6kqEJmi.js +857 -0
  52. package/dist/php-CWWqzOo8.js +506 -0
  53. package/dist/pla-FSvb_YP_.js +143 -0
  54. package/dist/postiats-DQdscQXO.js +913 -0
  55. package/dist/powerquery-CtA5JA1I.js +896 -0
  56. package/dist/powershell-DglEq96N.js +245 -0
  57. package/dist/protobuf-BSepub3e.js +426 -0
  58. package/dist/pug-B1847F4G.js +408 -0
  59. package/dist/python-CGI_fE8F.js +307 -0
  60. package/dist/qsharp-D4i0Nqg9.js +307 -0
  61. package/dist/r-cdRigKxa.js +249 -0
  62. package/dist/razor-DNVpjohl.js +556 -0
  63. package/dist/redis-D9MFxvE8.js +308 -0
  64. package/dist/redshift-CmCnsvL-.js +815 -0
  65. package/dist/restructuredtext-CWy8J51t.js +180 -0
  66. package/dist/ruby-WP-c36m5.js +517 -0
  67. package/dist/rust-Q9FLdYpu.js +349 -0
  68. package/dist/sb-C54-JBGT.js +121 -0
  69. package/dist/scala-CzbFImc5.js +376 -0
  70. package/dist/scheme-BhfDmYN3.js +114 -0
  71. package/dist/scss-CEmiBXpS.js +268 -0
  72. package/dist/shell-Bmc1VhG0.js +227 -0
  73. package/dist/solidity-C9Q2I8Hh.js +1373 -0
  74. package/dist/sophia-jWa1UyKz.js +205 -0
  75. package/dist/sparql-CM7jctbc.js +207 -0
  76. package/dist/sql-WzihTkbg.js +859 -0
  77. package/dist/st-6y7_3aup.js +422 -0
  78. package/dist/style.css +1 -0
  79. package/dist/swift-k-0zxG_D.js +318 -0
  80. package/dist/systemverilog-Pnr5_rIP.js +582 -0
  81. package/dist/tcl-fNPXval8.js +238 -0
  82. package/dist/tsMode-CRUDJ1Gx.js +895 -0
  83. package/dist/twig-L2MkztkV.js +398 -0
  84. package/dist/types/composables/useMonacoEditor.d.ts +25 -0
  85. package/dist/types/composables/useMonacoEditor.d.ts.map +1 -0
  86. package/dist/types/constants/index.d.ts +3 -0
  87. package/dist/types/constants/index.d.ts.map +1 -0
  88. package/dist/types/index.d.ts +1 -0
  89. package/dist/types/index.d.ts.map +1 -1
  90. package/dist/types/tests/mocks/monaco-editor-api.d.ts +78 -0
  91. package/dist/types/tests/mocks/monaco-editor-api.d.ts.map +1 -0
  92. package/dist/types/types/index.d.ts +68 -1
  93. package/dist/types/types/index.d.ts.map +1 -1
  94. package/dist/typescript-C2FvJtQm.js +349 -0
  95. package/dist/typespec-Cqqo-3Pt.js +123 -0
  96. package/dist/vb-B5YC2xN9.js +378 -0
  97. package/dist/wgsl-B-_uRex7.js +445 -0
  98. package/dist/xml-e_XsfZP6.js +101 -0
  99. package/dist/yaml-DOzdDlyx.js +212 -0
  100. package/package.json +14 -8
@@ -0,0 +1,180 @@
1
+ /*!-----------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
4
+ * Released under the MIT license
5
+ * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
6
+ *-----------------------------------------------------------------------------*/
7
+ var e = {
8
+ brackets: [
9
+ ["{", "}"],
10
+ ["[", "]"],
11
+ ["(", ")"]
12
+ ],
13
+ autoClosingPairs: [
14
+ { open: "{", close: "}" },
15
+ { open: "[", close: "]" },
16
+ { open: "(", close: ")" },
17
+ { open: "<", close: ">", notIn: ["string"] }
18
+ ],
19
+ surroundingPairs: [
20
+ { open: "(", close: ")" },
21
+ { open: "[", close: "]" },
22
+ { open: "`", close: "`" }
23
+ ],
24
+ folding: {
25
+ markers: {
26
+ start: new RegExp("^\\s*<!--\\s*#?region\\b.*-->"),
27
+ end: new RegExp("^\\s*<!--\\s*#?endregion\\b.*-->")
28
+ }
29
+ }
30
+ }, n = {
31
+ defaultToken: "",
32
+ tokenPostfix: ".rst",
33
+ control: /[\\`*_\[\]{}()#+\-\.!]/,
34
+ escapes: /\\(?:@control)/,
35
+ empty: [
36
+ "area",
37
+ "base",
38
+ "basefont",
39
+ "br",
40
+ "col",
41
+ "frame",
42
+ "hr",
43
+ "img",
44
+ "input",
45
+ "isindex",
46
+ "link",
47
+ "meta",
48
+ "param"
49
+ ],
50
+ alphanumerics: /[A-Za-z0-9]/,
51
+ simpleRefNameWithoutBq: /(?:@alphanumerics[-_+:.]*@alphanumerics)+|(?:@alphanumerics+)/,
52
+ simpleRefName: /(?:`@phrase`|@simpleRefNameWithoutBq)/,
53
+ phrase: /@simpleRefNameWithoutBq(?:\s@simpleRefNameWithoutBq)*/,
54
+ citationName: /[A-Za-z][A-Za-z0-9-_.]*/,
55
+ blockLiteralStart: /(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,
56
+ precedingChars: /(?:[ -:/'"<([{])/,
57
+ followingChars: /(?:[ -.,:;!?/'")\]}>]|$)/,
58
+ punctuation: /(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,
59
+ tokenizer: {
60
+ root: [
61
+ //sections
62
+ [/^(@punctuation{3,}$){1,1}?/, "keyword"],
63
+ //line-blocks
64
+ //No rules on it
65
+ //bullet-lists
66
+ [/^\s*([\*\-+‣•]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/, "keyword"],
67
+ //literal-blocks
68
+ [/([ ]::)\s*$/, "keyword", "@blankLineOfLiteralBlocks"],
69
+ [/(::)\s*$/, "keyword", "@blankLineOfLiteralBlocks"],
70
+ { include: "@tables" },
71
+ { include: "@explicitMarkupBlocks" },
72
+ { include: "@inlineMarkup" }
73
+ ],
74
+ explicitMarkupBlocks: [
75
+ //citations
76
+ { include: "@citations" },
77
+ //footnotes
78
+ { include: "@footnotes" },
79
+ //directives
80
+ [
81
+ /^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,
82
+ [{ token: "", next: "subsequentLines" }, "keyword", "", ""]
83
+ ],
84
+ //hyperlink-targets
85
+ [
86
+ /^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,
87
+ [{ token: "", next: "hyperlinks" }, "", "", "string.link", "", "", "string.link"]
88
+ ],
89
+ //anonymous-hyperlinks
90
+ [
91
+ /^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,
92
+ [{ token: "", next: "subsequentLines" }, "", "", "", "string.link"]
93
+ ],
94
+ [/^(__\s+)(.+)/, ["", "string.link"]],
95
+ //substitution-definitions
96
+ [
97
+ /^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,
98
+ [{ token: "", next: "subsequentLines" }, "", "string.link", "", "keyword", ""],
99
+ "@rawBlocks"
100
+ ],
101
+ [/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/, ["", "string.link", ""]],
102
+ //comments
103
+ [/^(\.\.)([ ].*)$/, [{ token: "", next: "@comments" }, "comment"]]
104
+ ],
105
+ inlineMarkup: [
106
+ { include: "@citationsReference" },
107
+ { include: "@footnotesReference" },
108
+ //hyperlink-references
109
+ [/(@simpleRefName)(_{1,2})/, ["string.link", ""]],
110
+ //embedded-uris-and-aliases
111
+ [/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/, ["", "string.link", "", "string.link", "", "", ""]],
112
+ //emphasis
113
+ [/\*\*([^\\*]|\*(?!\*))+\*\*/, "strong"],
114
+ [/\*[^*]+\*/, "emphasis"],
115
+ //inline-literals
116
+ [/(``)((?:[^`]|\`(?!`))+)(``)/, ["", "keyword", ""]],
117
+ [/(__\s+)(.+)/, ["", "keyword"]],
118
+ //interpreted-text
119
+ [/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/, ["", "keyword", "", "", ""]],
120
+ [/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/, ["", "", "", "keyword", ""]],
121
+ [/(`)([^`]+)(`)/, ""],
122
+ //inline-internal-targets
123
+ [/(_`)(@phrase)(`)/, ["", "string.link", ""]]
124
+ ],
125
+ citations: [
126
+ [
127
+ /^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,
128
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
129
+ ]
130
+ ],
131
+ citationsReference: [[/(\[)(@citationName)(\]_)/, ["", "string.link", ""]]],
132
+ footnotes: [
133
+ [
134
+ /^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,
135
+ [{ token: "", next: "@subsequentLines" }, "string.link", ""]
136
+ ],
137
+ [
138
+ /^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,
139
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
140
+ ],
141
+ [
142
+ /^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,
143
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
144
+ ]
145
+ ],
146
+ footnotesReference: [
147
+ [/(\[)([0-9]+)(\])(_)/, ["", "string.link", "", ""]],
148
+ [/(\[)(#@simpleRefName?)(\])(_)/, ["", "string.link", "", ""]],
149
+ [/(\[)(\*)(\])(_)/, ["", "string.link", "", ""]]
150
+ ],
151
+ blankLineOfLiteralBlocks: [
152
+ [/^$/, "", "@subsequentLinesOfLiteralBlocks"],
153
+ [/^.*$/, "", "@pop"]
154
+ ],
155
+ subsequentLinesOfLiteralBlocks: [
156
+ [/(@blockLiteralStart+)(.*)/, ["keyword", ""]],
157
+ [/^(?!blockLiteralStart)/, "", "@popall"]
158
+ ],
159
+ subsequentLines: [
160
+ [/^[\s]+.*/, ""],
161
+ [/^(?!\s)/, "", "@pop"]
162
+ ],
163
+ hyperlinks: [
164
+ [/^[\s]+.*/, "string.link"],
165
+ [/^(?!\s)/, "", "@pop"]
166
+ ],
167
+ comments: [
168
+ [/^[\s]+.*/, "comment"],
169
+ [/^(?!\s)/, "", "@pop"]
170
+ ],
171
+ tables: [
172
+ [/\+-[+-]+/, "keyword"],
173
+ [/\+=[+=]+/, "keyword"]
174
+ ]
175
+ }
176
+ };
177
+ export {
178
+ e as conf,
179
+ n as language
180
+ };
@@ -0,0 +1,517 @@
1
+ /*!-----------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
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
+ blockComment: ["=begin", "=end"]
11
+ },
12
+ brackets: [
13
+ ["(", ")"],
14
+ ["{", "}"],
15
+ ["[", "]"]
16
+ ],
17
+ autoClosingPairs: [
18
+ { open: "{", close: "}" },
19
+ { open: "[", close: "]" },
20
+ { open: "(", close: ")" },
21
+ { open: '"', close: '"' },
22
+ { open: "'", close: "'" }
23
+ ],
24
+ surroundingPairs: [
25
+ { open: "{", close: "}" },
26
+ { open: "[", close: "]" },
27
+ { open: "(", close: ")" },
28
+ { open: '"', close: '"' },
29
+ { open: "'", close: "'" }
30
+ ],
31
+ indentationRules: {
32
+ increaseIndentPattern: new RegExp(
33
+ `^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|("|'|/).*\\4)*(#.*)?$`
34
+ ),
35
+ decreaseIndentPattern: new RegExp(
36
+ "^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)"
37
+ )
38
+ }
39
+ }, t = {
40
+ tokenPostfix: ".ruby",
41
+ keywords: [
42
+ "__LINE__",
43
+ "__ENCODING__",
44
+ "__FILE__",
45
+ "BEGIN",
46
+ "END",
47
+ "alias",
48
+ "and",
49
+ "begin",
50
+ "break",
51
+ "case",
52
+ "class",
53
+ "def",
54
+ "defined?",
55
+ "do",
56
+ "else",
57
+ "elsif",
58
+ "end",
59
+ "ensure",
60
+ "for",
61
+ "false",
62
+ "if",
63
+ "in",
64
+ "module",
65
+ "next",
66
+ "nil",
67
+ "not",
68
+ "or",
69
+ "redo",
70
+ "rescue",
71
+ "retry",
72
+ "return",
73
+ "self",
74
+ "super",
75
+ "then",
76
+ "true",
77
+ "undef",
78
+ "unless",
79
+ "until",
80
+ "when",
81
+ "while",
82
+ "yield"
83
+ ],
84
+ keywordops: ["::", "..", "...", "?", ":", "=>"],
85
+ builtins: [
86
+ "require",
87
+ "public",
88
+ "private",
89
+ "include",
90
+ "extend",
91
+ "attr_reader",
92
+ "protected",
93
+ "private_class_method",
94
+ "protected_class_method",
95
+ "new"
96
+ ],
97
+ // these are closed by 'end' (if, while and until are handled separately)
98
+ declarations: [
99
+ "module",
100
+ "class",
101
+ "def",
102
+ "case",
103
+ "do",
104
+ "begin",
105
+ "for",
106
+ "if",
107
+ "while",
108
+ "until",
109
+ "unless"
110
+ ],
111
+ linedecls: ["def", "case", "do", "begin", "for", "if", "while", "until", "unless"],
112
+ operators: [
113
+ "^",
114
+ "&",
115
+ "|",
116
+ "<=>",
117
+ "==",
118
+ "===",
119
+ "!~",
120
+ "=~",
121
+ ">",
122
+ ">=",
123
+ "<",
124
+ "<=",
125
+ "<<",
126
+ ">>",
127
+ "+",
128
+ "-",
129
+ "*",
130
+ "/",
131
+ "%",
132
+ "**",
133
+ "~",
134
+ "+@",
135
+ "-@",
136
+ "[]",
137
+ "[]=",
138
+ "`",
139
+ "+=",
140
+ "-=",
141
+ "*=",
142
+ "**=",
143
+ "/=",
144
+ "^=",
145
+ "%=",
146
+ "<<=",
147
+ ">>=",
148
+ "&=",
149
+ "&&=",
150
+ "||=",
151
+ "|="
152
+ ],
153
+ brackets: [
154
+ { open: "(", close: ")", token: "delimiter.parenthesis" },
155
+ { open: "{", close: "}", token: "delimiter.curly" },
156
+ { open: "[", close: "]", token: "delimiter.square" }
157
+ ],
158
+ // we include these common regular expressions
159
+ symbols: /[=><!~?:&|+\-*\/\^%\.]+/,
160
+ // escape sequences
161
+ escape: /(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,
162
+ escapes: /\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,
163
+ decpart: /\d(_?\d)*/,
164
+ decimal: /0|@decpart/,
165
+ delim: /[^a-zA-Z0-9\s\n\r]/,
166
+ heredelim: /(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,
167
+ regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
168
+ regexpesc: /\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,
169
+ // The main tokenizer for our languages
170
+ tokenizer: {
171
+ // Main entry.
172
+ // root.<decl> where decl is the current opening declaration (like 'class')
173
+ root: [
174
+ // identifiers and keywords
175
+ // most complexity here is due to matching 'end' correctly with declarations.
176
+ // We distinguish a declaration that comes first on a line, versus declarations further on a line (which are most likey modifiers)
177
+ [
178
+ /^(\s*)([a-z_]\w*[!?=]?)/,
179
+ [
180
+ "white",
181
+ {
182
+ cases: {
183
+ "for|until|while": {
184
+ token: "keyword.$2",
185
+ next: "@dodecl.$2"
186
+ },
187
+ "@declarations": {
188
+ token: "keyword.$2",
189
+ next: "@root.$2"
190
+ },
191
+ end: { token: "keyword.$S2", next: "@pop" },
192
+ "@keywords": "keyword",
193
+ "@builtins": "predefined",
194
+ "@default": "identifier"
195
+ }
196
+ }
197
+ ]
198
+ ],
199
+ [
200
+ /[a-z_]\w*[!?=]?/,
201
+ {
202
+ cases: {
203
+ "if|unless|while|until": {
204
+ token: "keyword.$0x",
205
+ next: "@modifier.$0x"
206
+ },
207
+ for: { token: "keyword.$2", next: "@dodecl.$2" },
208
+ "@linedecls": { token: "keyword.$0", next: "@root.$0" },
209
+ end: { token: "keyword.$S2", next: "@pop" },
210
+ "@keywords": "keyword",
211
+ "@builtins": "predefined",
212
+ "@default": "identifier"
213
+ }
214
+ }
215
+ ],
216
+ [/[A-Z][\w]*[!?=]?/, "constructor.identifier"],
217
+ // constant
218
+ [/\$[\w]*/, "global.constant"],
219
+ // global
220
+ [/@[\w]*/, "namespace.instance.identifier"],
221
+ // instance
222
+ [/@@@[\w]*/, "namespace.class.identifier"],
223
+ // class
224
+ // here document
225
+ [/<<[-~](@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
226
+ [/[ \t\r\n]+<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
227
+ [/^<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
228
+ // whitespace
229
+ { include: "@whitespace" },
230
+ // strings
231
+ [/"/, { token: "string.d.delim", next: '@dstring.d."' }],
232
+ [/'/, { token: "string.sq.delim", next: "@sstring.sq" }],
233
+ // % literals. For efficiency, rematch in the 'pstring' state
234
+ [/%([rsqxwW]|Q?)/, { token: "@rematch", next: "pstring" }],
235
+ // commands and symbols
236
+ [/`/, { token: "string.x.delim", next: "@dstring.x.`" }],
237
+ [/:(\w|[$@])\w*[!?=]?/, "string.s"],
238
+ [/:"/, { token: "string.s.delim", next: '@dstring.s."' }],
239
+ [/:'/, { token: "string.s.delim", next: "@sstring.s" }],
240
+ // regular expressions. Lookahead for a (not escaped) closing forwardslash on the same line
241
+ [/\/(?=(\\\/|[^\/\n])+\/)/, { token: "regexp.delim", next: "@regexp" }],
242
+ // delimiters and operators
243
+ [/[{}()\[\]]/, "@brackets"],
244
+ [
245
+ /@symbols/,
246
+ {
247
+ cases: {
248
+ "@keywordops": "keyword",
249
+ "@operators": "operator",
250
+ "@default": ""
251
+ }
252
+ }
253
+ ],
254
+ [/[;,]/, "delimiter"],
255
+ // numbers
256
+ [/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/, "number.hex"],
257
+ [/0[_oO][0-7](_?[0-7])*/, "number.octal"],
258
+ [/0[bB][01](_?[01])*/, "number.binary"],
259
+ [/0[dD]@decpart/, "number"],
260
+ [
261
+ /@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,
262
+ {
263
+ cases: {
264
+ $1: "number.float",
265
+ "@default": "number"
266
+ }
267
+ }
268
+ ]
269
+ ],
270
+ // used to not treat a 'do' as a block opener if it occurs on the same
271
+ // line as a 'do' statement: 'while|until|for'
272
+ // dodecl.<decl> where decl is the declarations started, like 'while'
273
+ dodecl: [
274
+ [/^/, { token: "", switchTo: "@root.$S2" }],
275
+ // get out of do-skipping mode on a new line
276
+ [
277
+ /[a-z_]\w*[!?=]?/,
278
+ {
279
+ cases: {
280
+ end: { token: "keyword.$S2", next: "@pop" },
281
+ // end on same line
282
+ do: { token: "keyword", switchTo: "@root.$S2" },
283
+ // do on same line: not an open bracket here
284
+ "@linedecls": {
285
+ token: "@rematch",
286
+ switchTo: "@root.$S2"
287
+ },
288
+ // other declaration on same line: rematch
289
+ "@keywords": "keyword",
290
+ "@builtins": "predefined",
291
+ "@default": "identifier"
292
+ }
293
+ }
294
+ ],
295
+ { include: "@root" }
296
+ ],
297
+ // used to prevent potential modifiers ('if|until|while|unless') to match
298
+ // with 'end' keywords.
299
+ // modifier.<decl>x where decl is the declaration starter, like 'if'
300
+ modifier: [
301
+ [/^/, "", "@pop"],
302
+ // it was a modifier: get out of modifier mode on a new line
303
+ [
304
+ /[a-z_]\w*[!?=]?/,
305
+ {
306
+ cases: {
307
+ end: { token: "keyword.$S2", next: "@pop" },
308
+ // end on same line
309
+ "then|else|elsif|do": {
310
+ token: "keyword",
311
+ switchTo: "@root.$S2"
312
+ },
313
+ // real declaration and not a modifier
314
+ "@linedecls": {
315
+ token: "@rematch",
316
+ switchTo: "@root.$S2"
317
+ },
318
+ // other declaration => not a modifier
319
+ "@keywords": "keyword",
320
+ "@builtins": "predefined",
321
+ "@default": "identifier"
322
+ }
323
+ }
324
+ ],
325
+ { include: "@root" }
326
+ ],
327
+ // single quote strings (also used for symbols)
328
+ // sstring.<kind> where kind is 'sq' (single quote) or 's' (symbol)
329
+ sstring: [
330
+ [/[^\\']+/, "string.$S2"],
331
+ [/\\\\|\\'|\\$/, "string.$S2.escape"],
332
+ [/\\./, "string.$S2.invalid"],
333
+ [/'/, { token: "string.$S2.delim", next: "@pop" }]
334
+ ],
335
+ // double quoted "string".
336
+ // dstring.<kind>.<delim> where kind is 'd' (double quoted), 'x' (command), or 's' (symbol)
337
+ // and delim is the ending delimiter (" or `)
338
+ dstring: [
339
+ [/[^\\`"#]+/, "string.$S2"],
340
+ [/#/, "string.$S2.escape", "@interpolated"],
341
+ [/\\$/, "string.$S2.escape"],
342
+ [/@escapes/, "string.$S2.escape"],
343
+ [/\\./, "string.$S2.escape.invalid"],
344
+ [
345
+ /[`"]/,
346
+ {
347
+ cases: {
348
+ "$#==$S3": { token: "string.$S2.delim", next: "@pop" },
349
+ "@default": "string.$S2"
350
+ }
351
+ }
352
+ ]
353
+ ],
354
+ // literal documents
355
+ // heredoc.<close> where close is the closing delimiter
356
+ heredoc: [
357
+ [
358
+ /^(\s*)(@heredelim)$/,
359
+ {
360
+ cases: {
361
+ "$2==$S2": ["string.heredoc", { token: "string.heredoc.delimiter", next: "@pop" }],
362
+ "@default": ["string.heredoc", "string.heredoc"]
363
+ }
364
+ }
365
+ ],
366
+ [/.*/, "string.heredoc"]
367
+ ],
368
+ // interpolated sequence
369
+ interpolated: [
370
+ [/\$\w*/, "global.constant", "@pop"],
371
+ [/@\w*/, "namespace.class.identifier", "@pop"],
372
+ [/@@@\w*/, "namespace.instance.identifier", "@pop"],
373
+ [
374
+ /[{]/,
375
+ {
376
+ token: "string.escape.curly",
377
+ switchTo: "@interpolated_compound"
378
+ }
379
+ ],
380
+ ["", "", "@pop"]
381
+ // just a # is interpreted as a #
382
+ ],
383
+ // any code
384
+ interpolated_compound: [
385
+ [/[}]/, { token: "string.escape.curly", next: "@pop" }],
386
+ { include: "@root" }
387
+ ],
388
+ // %r quoted regexp
389
+ // pregexp.<open>.<close> where open/close are the open/close delimiter
390
+ pregexp: [
391
+ { include: "@whitespace" },
392
+ // turns out that you can quote using regex control characters, aargh!
393
+ // for example; %r|kgjgaj| is ok (even though | is used for alternation)
394
+ // so, we need to match those first
395
+ [
396
+ /[^\(\{\[\\]/,
397
+ {
398
+ cases: {
399
+ "$#==$S3": { token: "regexp.delim", next: "@pop" },
400
+ "$#==$S2": { token: "regexp.delim", next: "@push" },
401
+ // nested delimiters are allowed..
402
+ "~[)}\\]]": "@brackets.regexp.escape.control",
403
+ "~@regexpctl": "regexp.escape.control",
404
+ "@default": "regexp"
405
+ }
406
+ }
407
+ ],
408
+ { include: "@regexcontrol" }
409
+ ],
410
+ // We match regular expression quite precisely
411
+ regexp: [
412
+ { include: "@regexcontrol" },
413
+ [/[^\\\/]/, "regexp"],
414
+ ["/[ixmp]*", { token: "regexp.delim" }, "@pop"]
415
+ ],
416
+ regexcontrol: [
417
+ [
418
+ /(\{)(\d+(?:,\d*)?)(\})/,
419
+ [
420
+ "@brackets.regexp.escape.control",
421
+ "regexp.escape.control",
422
+ "@brackets.regexp.escape.control"
423
+ ]
424
+ ],
425
+ [
426
+ /(\[)(\^?)/,
427
+ ["@brackets.regexp.escape.control", { token: "regexp.escape.control", next: "@regexrange" }]
428
+ ],
429
+ [/(\()(\?[:=!])/, ["@brackets.regexp.escape.control", "regexp.escape.control"]],
430
+ [/\(\?#/, { token: "regexp.escape.control", next: "@regexpcomment" }],
431
+ [/[()]/, "@brackets.regexp.escape.control"],
432
+ [/@regexpctl/, "regexp.escape.control"],
433
+ [/\\$/, "regexp.escape"],
434
+ [/@regexpesc/, "regexp.escape"],
435
+ [/\\\./, "regexp.invalid"],
436
+ [/#/, "regexp.escape", "@interpolated"]
437
+ ],
438
+ regexrange: [
439
+ [/-/, "regexp.escape.control"],
440
+ [/\^/, "regexp.invalid"],
441
+ [/\\$/, "regexp.escape"],
442
+ [/@regexpesc/, "regexp.escape"],
443
+ [/[^\]]/, "regexp"],
444
+ [/\]/, "@brackets.regexp.escape.control", "@pop"]
445
+ ],
446
+ regexpcomment: [
447
+ [/[^)]+/, "comment"],
448
+ [/\)/, { token: "regexp.escape.control", next: "@pop" }]
449
+ ],
450
+ // % quoted strings
451
+ // A bit repetitive since we need to often special case the kind of ending delimiter
452
+ pstring: [
453
+ [/%([qws])\(/, { token: "string.$1.delim", switchTo: "@qstring.$1.(.)" }],
454
+ [/%([qws])\[/, { token: "string.$1.delim", switchTo: "@qstring.$1.[.]" }],
455
+ [/%([qws])\{/, { token: "string.$1.delim", switchTo: "@qstring.$1.{.}" }],
456
+ [/%([qws])</, { token: "string.$1.delim", switchTo: "@qstring.$1.<.>" }],
457
+ [/%([qws])(@delim)/, { token: "string.$1.delim", switchTo: "@qstring.$1.$2.$2" }],
458
+ [/%r\(/, { token: "regexp.delim", switchTo: "@pregexp.(.)" }],
459
+ [/%r\[/, { token: "regexp.delim", switchTo: "@pregexp.[.]" }],
460
+ [/%r\{/, { token: "regexp.delim", switchTo: "@pregexp.{.}" }],
461
+ [/%r</, { token: "regexp.delim", switchTo: "@pregexp.<.>" }],
462
+ [/%r(@delim)/, { token: "regexp.delim", switchTo: "@pregexp.$1.$1" }],
463
+ [/%(x|W|Q?)\(/, { token: "string.$1.delim", switchTo: "@qqstring.$1.(.)" }],
464
+ [/%(x|W|Q?)\[/, { token: "string.$1.delim", switchTo: "@qqstring.$1.[.]" }],
465
+ [/%(x|W|Q?)\{/, { token: "string.$1.delim", switchTo: "@qqstring.$1.{.}" }],
466
+ [/%(x|W|Q?)</, { token: "string.$1.delim", switchTo: "@qqstring.$1.<.>" }],
467
+ [/%(x|W|Q?)(@delim)/, { token: "string.$1.delim", switchTo: "@qqstring.$1.$2.$2" }],
468
+ [/%([rqwsxW]|Q?)./, { token: "invalid", next: "@pop" }],
469
+ // recover
470
+ [/./, { token: "invalid", next: "@pop" }]
471
+ // recover
472
+ ],
473
+ // non-expanded quoted string.
474
+ // qstring.<kind>.<open>.<close>
475
+ // kind = q|w|s (single quote, array, symbol)
476
+ // open = open delimiter
477
+ // close = close delimiter
478
+ qstring: [
479
+ [/\\$/, "string.$S2.escape"],
480
+ [/\\./, "string.$S2.escape"],
481
+ [
482
+ /./,
483
+ {
484
+ cases: {
485
+ "$#==$S4": { token: "string.$S2.delim", next: "@pop" },
486
+ "$#==$S3": { token: "string.$S2.delim", next: "@push" },
487
+ // nested delimiters are allowed..
488
+ "@default": "string.$S2"
489
+ }
490
+ }
491
+ ]
492
+ ],
493
+ // expanded quoted string.
494
+ // qqstring.<kind>.<open>.<close>
495
+ // kind = Q|W|x (double quote, array, command)
496
+ // open = open delimiter
497
+ // close = close delimiter
498
+ qqstring: [[/#/, "string.$S2.escape", "@interpolated"], { include: "@qstring" }],
499
+ // whitespace & comments
500
+ whitespace: [
501
+ [/[ \t\r\n]+/, ""],
502
+ [/^\s*=begin\b/, "comment", "@comment"],
503
+ [/#.*$/, "comment"]
504
+ ],
505
+ comment: [
506
+ [/[^=]+/, "comment"],
507
+ [/^\s*=begin\b/, "comment.invalid"],
508
+ // nested comment
509
+ [/^\s*=end\b.*/, "comment", "@pop"],
510
+ [/[=]/, "comment"]
511
+ ]
512
+ }
513
+ };
514
+ export {
515
+ e as conf,
516
+ t as language
517
+ };