monaco-editor11 1.1.7 → 1.1.8

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 (96) hide show
  1. package/dist/abap-CrvW7_qN.mjs +1398 -0
  2. package/dist/apex-BAOI8p1v.mjs +327 -0
  3. package/dist/assets/html.worker-C8VxctEJ.js +470 -0
  4. package/dist/azcli-BlCk_UqW.mjs +68 -0
  5. package/dist/bat-DPoEelVx.mjs +100 -0
  6. package/dist/bicep-Cp1F394l.mjs +102 -0
  7. package/dist/cameligo-CWqtSlQs.mjs +174 -0
  8. package/dist/clojure-CKBp32Gf.mjs +761 -0
  9. package/dist/coffee-CDo6vc-J.mjs +232 -0
  10. package/dist/cpp-DokufPgf.mjs +389 -0
  11. package/dist/csharp-BQi3szM0.mjs +326 -0
  12. package/dist/csp-BSGtCCZ-.mjs +53 -0
  13. package/dist/css-DEPFDJfb.mjs +187 -0
  14. package/dist/cssMode-BQ5BKBAY.mjs +141 -0
  15. package/dist/cypher-DAb1vOxS.mjs +263 -0
  16. package/dist/dart-C8p4jewR.mjs +281 -0
  17. package/dist/dockerfile-DP0iLFPN.mjs +130 -0
  18. package/dist/ecl-BDQHA6fi.mjs +456 -0
  19. package/dist/elixir-D4II6kDM.mjs +569 -0
  20. package/dist/environment.d.ts +1 -1
  21. package/dist/flow9-StcnL-VB.mjs +142 -0
  22. package/dist/freemarker2-6GYcye2r.mjs +982 -0
  23. package/dist/fsharp-DdUVp3EN.mjs +217 -0
  24. package/dist/go-D1-I258M.mjs +218 -0
  25. package/dist/graphql-DWkL3f8U.mjs +151 -0
  26. package/dist/handlebars-5_7gZ3QS.mjs +412 -0
  27. package/dist/hcl-D_0MNifv.mjs +183 -0
  28. package/dist/html-2thNXsIu.mjs +301 -0
  29. package/dist/htmlMode-Dmqis0oY.mjs +152 -0
  30. package/dist/index-CiIcpngo.mjs +128785 -0
  31. package/dist/index.d.ts +1 -7
  32. package/dist/ini-C4I2-MT7.mjs +71 -0
  33. package/dist/java-OBvaP_SS.mjs +232 -0
  34. package/dist/javascript-DGu9heQ1.mjs +70 -0
  35. package/dist/jsonMode-BHf-60PU.mjs +577 -0
  36. package/dist/julia-BmDH8Kkf.mjs +511 -0
  37. package/dist/kotlin-Dhu5AGOD.mjs +252 -0
  38. package/dist/less-CzmjXREq.mjs +162 -0
  39. package/dist/lexon-CV2c4pN9.mjs +157 -0
  40. package/dist/liquid-B6d5eZ0w.mjs +233 -0
  41. package/dist/lspLanguageFeatures-CQ-4g5T6.mjs +1458 -0
  42. package/dist/lua-CFY5U8qF.mjs +162 -0
  43. package/dist/m3-BL_AnZVh.mjs +210 -0
  44. package/dist/markdown-CWKQPXCv.mjs +229 -0
  45. package/dist/mdx-Dc2EzqW9.mjs +158 -0
  46. package/dist/mips-ButYmJ5E.mjs +198 -0
  47. package/dist/monaco-editor11.css +1 -0
  48. package/dist/monaco-editor11.es.js +21 -58
  49. package/dist/monaco-editor11.umd.js +1234 -1
  50. package/dist/msdax-C3cnXqDh.mjs +375 -0
  51. package/dist/mysql-YlSHaf6G.mjs +878 -0
  52. package/dist/objective-c-Dwnlproe.mjs +183 -0
  53. package/dist/pascal-UzGbSWEN.mjs +251 -0
  54. package/dist/pascaligo-CslTgu68.mjs +164 -0
  55. package/dist/perl-oj6r_mgw.mjs +626 -0
  56. package/dist/pgsql-DSBO0Mev.mjs +851 -0
  57. package/dist/php-YzCD--7j.mjs +500 -0
  58. package/dist/pla-CmylB8vQ.mjs +137 -0
  59. package/dist/postiats-CLFW5gNY.mjs +907 -0
  60. package/dist/powerquery-CmOWUvlh.mjs +890 -0
  61. package/dist/powershell-fHQcmBLK.mjs +239 -0
  62. package/dist/protobuf-p5BArb-9.mjs +420 -0
  63. package/dist/pug-gVdUDvqf.mjs +402 -0
  64. package/dist/python-BN7PRYMW.mjs +294 -0
  65. package/dist/qsharp-DnrWSUlt.mjs +301 -0
  66. package/dist/r-Cv309K2z.mjs +243 -0
  67. package/dist/razor-amsYwW3e.mjs +543 -0
  68. package/dist/redis-DTcS4wMj.mjs +302 -0
  69. package/dist/redshift-hLxZVESM.mjs +809 -0
  70. package/dist/restructuredtext-C898lK4f.mjs +174 -0
  71. package/dist/ruby-CgKtnJIQ.mjs +511 -0
  72. package/dist/rust-bj8oxVnh.mjs +343 -0
  73. package/dist/sb-DWynz26l.mjs +115 -0
  74. package/dist/scala-BL5z1UEd.mjs +370 -0
  75. package/dist/scheme-DUJsH6VU.mjs +108 -0
  76. package/dist/scss-CxjmhvaL.mjs +262 -0
  77. package/dist/shell-D14Zs1dF.mjs +221 -0
  78. package/dist/solidity-WyRm-BGK.mjs +1367 -0
  79. package/dist/sophia-CKk-_Oa5.mjs +199 -0
  80. package/dist/sparql-DHtmINMZ.mjs +201 -0
  81. package/dist/sql-Dqaj5JHC.mjs +853 -0
  82. package/dist/st-Bj2IIaop.mjs +416 -0
  83. package/dist/swift-DwxP72iM.mjs +312 -0
  84. package/dist/systemverilog-D7wJfuql.mjs +576 -0
  85. package/dist/tcl-0ApMt-eC.mjs +232 -0
  86. package/dist/tsMode-CfGJAg8A.mjs +946 -0
  87. package/dist/twig-DxwbdmvQ.mjs +392 -0
  88. package/dist/typescript-BkqvjzTg.mjs +336 -0
  89. package/dist/typespec-Fd-JwSuS.mjs +117 -0
  90. package/dist/vb-CxuyYE1I.mjs +372 -0
  91. package/dist/wgsl-DoEGc31J.mjs +439 -0
  92. package/dist/xml-BE08lKLg.mjs +88 -0
  93. package/dist/yaml-DaPfb7D4.mjs +199 -0
  94. package/package.json +2 -2
  95. package/dist/monacoeditorwork/html.worker.bundle.js +0 -30455
  96. /package/dist/monacoeditorwork/{editor.worker.bundle.js → editor.worker..bundle.js} +0 -0
@@ -0,0 +1,174 @@
1
+ const e = {
2
+ brackets: [
3
+ ["{", "}"],
4
+ ["[", "]"],
5
+ ["(", ")"]
6
+ ],
7
+ autoClosingPairs: [
8
+ { open: "{", close: "}" },
9
+ { open: "[", close: "]" },
10
+ { open: "(", close: ")" },
11
+ { open: "<", close: ">", notIn: ["string"] }
12
+ ],
13
+ surroundingPairs: [
14
+ { open: "(", close: ")" },
15
+ { open: "[", close: "]" },
16
+ { open: "`", close: "`" }
17
+ ],
18
+ folding: {
19
+ markers: {
20
+ start: new RegExp("^\\s*<!--\\s*#?region\\b.*-->"),
21
+ end: new RegExp("^\\s*<!--\\s*#?endregion\\b.*-->")
22
+ }
23
+ }
24
+ }, n = {
25
+ defaultToken: "",
26
+ tokenPostfix: ".rst",
27
+ control: /[\\`*_\[\]{}()#+\-\.!]/,
28
+ escapes: /\\(?:@control)/,
29
+ empty: [
30
+ "area",
31
+ "base",
32
+ "basefont",
33
+ "br",
34
+ "col",
35
+ "frame",
36
+ "hr",
37
+ "img",
38
+ "input",
39
+ "isindex",
40
+ "link",
41
+ "meta",
42
+ "param"
43
+ ],
44
+ alphanumerics: /[A-Za-z0-9]/,
45
+ simpleRefNameWithoutBq: /(?:@alphanumerics[-_+:.]*@alphanumerics)+|(?:@alphanumerics+)/,
46
+ simpleRefName: /(?:`@phrase`|@simpleRefNameWithoutBq)/,
47
+ phrase: /@simpleRefNameWithoutBq(?:\s@simpleRefNameWithoutBq)*/,
48
+ citationName: /[A-Za-z][A-Za-z0-9-_.]*/,
49
+ blockLiteralStart: /(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,
50
+ precedingChars: /(?:[ -:/'"<([{])/,
51
+ followingChars: /(?:[ -.,:;!?/'")\]}>]|$)/,
52
+ punctuation: /(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,
53
+ tokenizer: {
54
+ root: [
55
+ //sections
56
+ [/^(@punctuation{3,}$){1,1}?/, "keyword"],
57
+ //line-blocks
58
+ //No rules on it
59
+ //bullet-lists
60
+ [/^\s*([\*\-+‣•]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/, "keyword"],
61
+ //literal-blocks
62
+ [/([ ]::)\s*$/, "keyword", "@blankLineOfLiteralBlocks"],
63
+ [/(::)\s*$/, "keyword", "@blankLineOfLiteralBlocks"],
64
+ { include: "@tables" },
65
+ { include: "@explicitMarkupBlocks" },
66
+ { include: "@inlineMarkup" }
67
+ ],
68
+ explicitMarkupBlocks: [
69
+ //citations
70
+ { include: "@citations" },
71
+ //footnotes
72
+ { include: "@footnotes" },
73
+ //directives
74
+ [
75
+ /^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,
76
+ [{ token: "", next: "subsequentLines" }, "keyword", "", ""]
77
+ ],
78
+ //hyperlink-targets
79
+ [
80
+ /^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,
81
+ [{ token: "", next: "hyperlinks" }, "", "", "string.link", "", "", "string.link"]
82
+ ],
83
+ //anonymous-hyperlinks
84
+ [
85
+ /^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,
86
+ [{ token: "", next: "subsequentLines" }, "", "", "", "string.link"]
87
+ ],
88
+ [/^(__\s+)(.+)/, ["", "string.link"]],
89
+ //substitution-definitions
90
+ [
91
+ /^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,
92
+ [{ token: "", next: "subsequentLines" }, "", "string.link", "", "keyword", ""],
93
+ "@rawBlocks"
94
+ ],
95
+ [/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/, ["", "string.link", ""]],
96
+ //comments
97
+ [/^(\.\.)([ ].*)$/, [{ token: "", next: "@comments" }, "comment"]]
98
+ ],
99
+ inlineMarkup: [
100
+ { include: "@citationsReference" },
101
+ { include: "@footnotesReference" },
102
+ //hyperlink-references
103
+ [/(@simpleRefName)(_{1,2})/, ["string.link", ""]],
104
+ //embedded-uris-and-aliases
105
+ [/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/, ["", "string.link", "", "string.link", "", "", ""]],
106
+ //emphasis
107
+ [/\*\*([^\\*]|\*(?!\*))+\*\*/, "strong"],
108
+ [/\*[^*]+\*/, "emphasis"],
109
+ //inline-literals
110
+ [/(``)((?:[^`]|\`(?!`))+)(``)/, ["", "keyword", ""]],
111
+ [/(__\s+)(.+)/, ["", "keyword"]],
112
+ //interpreted-text
113
+ [/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/, ["", "keyword", "", "", ""]],
114
+ [/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/, ["", "", "", "keyword", ""]],
115
+ [/(`)([^`]+)(`)/, ""],
116
+ //inline-internal-targets
117
+ [/(_`)(@phrase)(`)/, ["", "string.link", ""]]
118
+ ],
119
+ citations: [
120
+ [
121
+ /^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,
122
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
123
+ ]
124
+ ],
125
+ citationsReference: [[/(\[)(@citationName)(\]_)/, ["", "string.link", ""]]],
126
+ footnotes: [
127
+ [
128
+ /^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,
129
+ [{ token: "", next: "@subsequentLines" }, "string.link", ""]
130
+ ],
131
+ [
132
+ /^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,
133
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
134
+ ],
135
+ [
136
+ /^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,
137
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
138
+ ]
139
+ ],
140
+ footnotesReference: [
141
+ [/(\[)([0-9]+)(\])(_)/, ["", "string.link", "", ""]],
142
+ [/(\[)(#@simpleRefName?)(\])(_)/, ["", "string.link", "", ""]],
143
+ [/(\[)(\*)(\])(_)/, ["", "string.link", "", ""]]
144
+ ],
145
+ blankLineOfLiteralBlocks: [
146
+ [/^$/, "", "@subsequentLinesOfLiteralBlocks"],
147
+ [/^.*$/, "", "@pop"]
148
+ ],
149
+ subsequentLinesOfLiteralBlocks: [
150
+ [/(@blockLiteralStart+)(.*)/, ["keyword", ""]],
151
+ [/^(?!blockLiteralStart)/, "", "@popall"]
152
+ ],
153
+ subsequentLines: [
154
+ [/^[\s]+.*/, ""],
155
+ [/^(?!\s)/, "", "@pop"]
156
+ ],
157
+ hyperlinks: [
158
+ [/^[\s]+.*/, "string.link"],
159
+ [/^(?!\s)/, "", "@pop"]
160
+ ],
161
+ comments: [
162
+ [/^[\s]+.*/, "comment"],
163
+ [/^(?!\s)/, "", "@pop"]
164
+ ],
165
+ tables: [
166
+ [/\+-[+-]+/, "keyword"],
167
+ [/\+=[+=]+/, "keyword"]
168
+ ]
169
+ }
170
+ };
171
+ export {
172
+ e as conf,
173
+ n as language
174
+ };
@@ -0,0 +1,511 @@
1
+ const e = {
2
+ comments: {
3
+ lineComment: "#",
4
+ blockComment: ["=begin", "=end"]
5
+ },
6
+ brackets: [
7
+ ["(", ")"],
8
+ ["{", "}"],
9
+ ["[", "]"]
10
+ ],
11
+ autoClosingPairs: [
12
+ { open: "{", close: "}" },
13
+ { open: "[", close: "]" },
14
+ { open: "(", close: ")" },
15
+ { open: '"', close: '"' },
16
+ { open: "'", close: "'" }
17
+ ],
18
+ surroundingPairs: [
19
+ { open: "{", close: "}" },
20
+ { open: "[", close: "]" },
21
+ { open: "(", close: ")" },
22
+ { open: '"', close: '"' },
23
+ { open: "'", close: "'" }
24
+ ],
25
+ indentationRules: {
26
+ increaseIndentPattern: new RegExp(
27
+ `^\\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)*(#.*)?$`
28
+ ),
29
+ decreaseIndentPattern: new RegExp(
30
+ "^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)"
31
+ )
32
+ }
33
+ }, t = {
34
+ tokenPostfix: ".ruby",
35
+ keywords: [
36
+ "__LINE__",
37
+ "__ENCODING__",
38
+ "__FILE__",
39
+ "BEGIN",
40
+ "END",
41
+ "alias",
42
+ "and",
43
+ "begin",
44
+ "break",
45
+ "case",
46
+ "class",
47
+ "def",
48
+ "defined?",
49
+ "do",
50
+ "else",
51
+ "elsif",
52
+ "end",
53
+ "ensure",
54
+ "for",
55
+ "false",
56
+ "if",
57
+ "in",
58
+ "module",
59
+ "next",
60
+ "nil",
61
+ "not",
62
+ "or",
63
+ "redo",
64
+ "rescue",
65
+ "retry",
66
+ "return",
67
+ "self",
68
+ "super",
69
+ "then",
70
+ "true",
71
+ "undef",
72
+ "unless",
73
+ "until",
74
+ "when",
75
+ "while",
76
+ "yield"
77
+ ],
78
+ keywordops: ["::", "..", "...", "?", ":", "=>"],
79
+ builtins: [
80
+ "require",
81
+ "public",
82
+ "private",
83
+ "include",
84
+ "extend",
85
+ "attr_reader",
86
+ "protected",
87
+ "private_class_method",
88
+ "protected_class_method",
89
+ "new"
90
+ ],
91
+ // these are closed by 'end' (if, while and until are handled separately)
92
+ declarations: [
93
+ "module",
94
+ "class",
95
+ "def",
96
+ "case",
97
+ "do",
98
+ "begin",
99
+ "for",
100
+ "if",
101
+ "while",
102
+ "until",
103
+ "unless"
104
+ ],
105
+ linedecls: ["def", "case", "do", "begin", "for", "if", "while", "until", "unless"],
106
+ operators: [
107
+ "^",
108
+ "&",
109
+ "|",
110
+ "<=>",
111
+ "==",
112
+ "===",
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
+ brackets: [
148
+ { open: "(", close: ")", token: "delimiter.parenthesis" },
149
+ { open: "{", close: "}", token: "delimiter.curly" },
150
+ { open: "[", close: "]", token: "delimiter.square" }
151
+ ],
152
+ // we include these common regular expressions
153
+ symbols: /[=><!~?:&|+\-*\/\^%\.]+/,
154
+ // escape sequences
155
+ escape: /(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,
156
+ escapes: /\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,
157
+ decpart: /\d(_?\d)*/,
158
+ decimal: /0|@decpart/,
159
+ delim: /[^a-zA-Z0-9\s\n\r]/,
160
+ heredelim: /(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,
161
+ regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
162
+ regexpesc: /\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,
163
+ // The main tokenizer for our languages
164
+ tokenizer: {
165
+ // Main entry.
166
+ // root.<decl> where decl is the current opening declaration (like 'class')
167
+ root: [
168
+ // identifiers and keywords
169
+ // most complexity here is due to matching 'end' correctly with declarations.
170
+ // We distinguish a declaration that comes first on a line, versus declarations further on a line (which are most likey modifiers)
171
+ [
172
+ /^(\s*)([a-z_]\w*[!?=]?)/,
173
+ [
174
+ "white",
175
+ {
176
+ cases: {
177
+ "for|until|while": {
178
+ token: "keyword.$2",
179
+ next: "@dodecl.$2"
180
+ },
181
+ "@declarations": {
182
+ token: "keyword.$2",
183
+ next: "@root.$2"
184
+ },
185
+ end: { token: "keyword.$S2", next: "@pop" },
186
+ "@keywords": "keyword",
187
+ "@builtins": "predefined",
188
+ "@default": "identifier"
189
+ }
190
+ }
191
+ ]
192
+ ],
193
+ [
194
+ /[a-z_]\w*[!?=]?/,
195
+ {
196
+ cases: {
197
+ "if|unless|while|until": {
198
+ token: "keyword.$0x",
199
+ next: "@modifier.$0x"
200
+ },
201
+ for: { token: "keyword.$2", next: "@dodecl.$2" },
202
+ "@linedecls": { token: "keyword.$0", next: "@root.$0" },
203
+ end: { token: "keyword.$S2", next: "@pop" },
204
+ "@keywords": "keyword",
205
+ "@builtins": "predefined",
206
+ "@default": "identifier"
207
+ }
208
+ }
209
+ ],
210
+ [/[A-Z][\w]*[!?=]?/, "constructor.identifier"],
211
+ // constant
212
+ [/\$[\w]*/, "global.constant"],
213
+ // global
214
+ [/@[\w]*/, "namespace.instance.identifier"],
215
+ // instance
216
+ [/@@@[\w]*/, "namespace.class.identifier"],
217
+ // class
218
+ // here document
219
+ [/<<[-~](@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
220
+ [/[ \t\r\n]+<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
221
+ [/^<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
222
+ // whitespace
223
+ { include: "@whitespace" },
224
+ // strings
225
+ [/"/, { token: "string.d.delim", next: '@dstring.d."' }],
226
+ [/'/, { token: "string.sq.delim", next: "@sstring.sq" }],
227
+ // % literals. For efficiency, rematch in the 'pstring' state
228
+ [/%([rsqxwW]|Q?)/, { token: "@rematch", next: "pstring" }],
229
+ // commands and symbols
230
+ [/`/, { token: "string.x.delim", next: "@dstring.x.`" }],
231
+ [/:(\w|[$@])\w*[!?=]?/, "string.s"],
232
+ [/:"/, { token: "string.s.delim", next: '@dstring.s."' }],
233
+ [/:'/, { token: "string.s.delim", next: "@sstring.s" }],
234
+ // regular expressions. Lookahead for a (not escaped) closing forwardslash on the same line
235
+ [/\/(?=(\\\/|[^\/\n])+\/)/, { token: "regexp.delim", next: "@regexp" }],
236
+ // delimiters and operators
237
+ [/[{}()\[\]]/, "@brackets"],
238
+ [
239
+ /@symbols/,
240
+ {
241
+ cases: {
242
+ "@keywordops": "keyword",
243
+ "@operators": "operator",
244
+ "@default": ""
245
+ }
246
+ }
247
+ ],
248
+ [/[;,]/, "delimiter"],
249
+ // numbers
250
+ [/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/, "number.hex"],
251
+ [/0[_oO][0-7](_?[0-7])*/, "number.octal"],
252
+ [/0[bB][01](_?[01])*/, "number.binary"],
253
+ [/0[dD]@decpart/, "number"],
254
+ [
255
+ /@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,
256
+ {
257
+ cases: {
258
+ $1: "number.float",
259
+ "@default": "number"
260
+ }
261
+ }
262
+ ]
263
+ ],
264
+ // used to not treat a 'do' as a block opener if it occurs on the same
265
+ // line as a 'do' statement: 'while|until|for'
266
+ // dodecl.<decl> where decl is the declarations started, like 'while'
267
+ dodecl: [
268
+ [/^/, { token: "", switchTo: "@root.$S2" }],
269
+ // get out of do-skipping mode on a new line
270
+ [
271
+ /[a-z_]\w*[!?=]?/,
272
+ {
273
+ cases: {
274
+ end: { token: "keyword.$S2", next: "@pop" },
275
+ // end on same line
276
+ do: { token: "keyword", switchTo: "@root.$S2" },
277
+ // do on same line: not an open bracket here
278
+ "@linedecls": {
279
+ token: "@rematch",
280
+ switchTo: "@root.$S2"
281
+ },
282
+ // other declaration on same line: rematch
283
+ "@keywords": "keyword",
284
+ "@builtins": "predefined",
285
+ "@default": "identifier"
286
+ }
287
+ }
288
+ ],
289
+ { include: "@root" }
290
+ ],
291
+ // used to prevent potential modifiers ('if|until|while|unless') to match
292
+ // with 'end' keywords.
293
+ // modifier.<decl>x where decl is the declaration starter, like 'if'
294
+ modifier: [
295
+ [/^/, "", "@pop"],
296
+ // it was a modifier: get out of modifier mode on a new line
297
+ [
298
+ /[a-z_]\w*[!?=]?/,
299
+ {
300
+ cases: {
301
+ end: { token: "keyword.$S2", next: "@pop" },
302
+ // end on same line
303
+ "then|else|elsif|do": {
304
+ token: "keyword",
305
+ switchTo: "@root.$S2"
306
+ },
307
+ // real declaration and not a modifier
308
+ "@linedecls": {
309
+ token: "@rematch",
310
+ switchTo: "@root.$S2"
311
+ },
312
+ // other declaration => not a modifier
313
+ "@keywords": "keyword",
314
+ "@builtins": "predefined",
315
+ "@default": "identifier"
316
+ }
317
+ }
318
+ ],
319
+ { include: "@root" }
320
+ ],
321
+ // single quote strings (also used for symbols)
322
+ // sstring.<kind> where kind is 'sq' (single quote) or 's' (symbol)
323
+ sstring: [
324
+ [/[^\\']+/, "string.$S2"],
325
+ [/\\\\|\\'|\\$/, "string.$S2.escape"],
326
+ [/\\./, "string.$S2.invalid"],
327
+ [/'/, { token: "string.$S2.delim", next: "@pop" }]
328
+ ],
329
+ // double quoted "string".
330
+ // dstring.<kind>.<delim> where kind is 'd' (double quoted), 'x' (command), or 's' (symbol)
331
+ // and delim is the ending delimiter (" or `)
332
+ dstring: [
333
+ [/[^\\`"#]+/, "string.$S2"],
334
+ [/#/, "string.$S2.escape", "@interpolated"],
335
+ [/\\$/, "string.$S2.escape"],
336
+ [/@escapes/, "string.$S2.escape"],
337
+ [/\\./, "string.$S2.escape.invalid"],
338
+ [
339
+ /[`"]/,
340
+ {
341
+ cases: {
342
+ "$#==$S3": { token: "string.$S2.delim", next: "@pop" },
343
+ "@default": "string.$S2"
344
+ }
345
+ }
346
+ ]
347
+ ],
348
+ // literal documents
349
+ // heredoc.<close> where close is the closing delimiter
350
+ heredoc: [
351
+ [
352
+ /^(\s*)(@heredelim)$/,
353
+ {
354
+ cases: {
355
+ "$2==$S2": ["string.heredoc", { token: "string.heredoc.delimiter", next: "@pop" }],
356
+ "@default": ["string.heredoc", "string.heredoc"]
357
+ }
358
+ }
359
+ ],
360
+ [/.*/, "string.heredoc"]
361
+ ],
362
+ // interpolated sequence
363
+ interpolated: [
364
+ [/\$\w*/, "global.constant", "@pop"],
365
+ [/@\w*/, "namespace.class.identifier", "@pop"],
366
+ [/@@@\w*/, "namespace.instance.identifier", "@pop"],
367
+ [
368
+ /[{]/,
369
+ {
370
+ token: "string.escape.curly",
371
+ switchTo: "@interpolated_compound"
372
+ }
373
+ ],
374
+ ["", "", "@pop"]
375
+ // just a # is interpreted as a #
376
+ ],
377
+ // any code
378
+ interpolated_compound: [
379
+ [/[}]/, { token: "string.escape.curly", next: "@pop" }],
380
+ { include: "@root" }
381
+ ],
382
+ // %r quoted regexp
383
+ // pregexp.<open>.<close> where open/close are the open/close delimiter
384
+ pregexp: [
385
+ { include: "@whitespace" },
386
+ // turns out that you can quote using regex control characters, aargh!
387
+ // for example; %r|kgjgaj| is ok (even though | is used for alternation)
388
+ // so, we need to match those first
389
+ [
390
+ /[^\(\{\[\\]/,
391
+ {
392
+ cases: {
393
+ "$#==$S3": { token: "regexp.delim", next: "@pop" },
394
+ "$#==$S2": { token: "regexp.delim", next: "@push" },
395
+ // nested delimiters are allowed..
396
+ "~[)}\\]]": "@brackets.regexp.escape.control",
397
+ "~@regexpctl": "regexp.escape.control",
398
+ "@default": "regexp"
399
+ }
400
+ }
401
+ ],
402
+ { include: "@regexcontrol" }
403
+ ],
404
+ // We match regular expression quite precisely
405
+ regexp: [
406
+ { include: "@regexcontrol" },
407
+ [/[^\\\/]/, "regexp"],
408
+ ["/[ixmp]*", { token: "regexp.delim" }, "@pop"]
409
+ ],
410
+ regexcontrol: [
411
+ [
412
+ /(\{)(\d+(?:,\d*)?)(\})/,
413
+ [
414
+ "@brackets.regexp.escape.control",
415
+ "regexp.escape.control",
416
+ "@brackets.regexp.escape.control"
417
+ ]
418
+ ],
419
+ [
420
+ /(\[)(\^?)/,
421
+ ["@brackets.regexp.escape.control", { token: "regexp.escape.control", next: "@regexrange" }]
422
+ ],
423
+ [/(\()(\?[:=!])/, ["@brackets.regexp.escape.control", "regexp.escape.control"]],
424
+ [/\(\?#/, { token: "regexp.escape.control", next: "@regexpcomment" }],
425
+ [/[()]/, "@brackets.regexp.escape.control"],
426
+ [/@regexpctl/, "regexp.escape.control"],
427
+ [/\\$/, "regexp.escape"],
428
+ [/@regexpesc/, "regexp.escape"],
429
+ [/\\\./, "regexp.invalid"],
430
+ [/#/, "regexp.escape", "@interpolated"]
431
+ ],
432
+ regexrange: [
433
+ [/-/, "regexp.escape.control"],
434
+ [/\^/, "regexp.invalid"],
435
+ [/\\$/, "regexp.escape"],
436
+ [/@regexpesc/, "regexp.escape"],
437
+ [/[^\]]/, "regexp"],
438
+ [/\]/, "@brackets.regexp.escape.control", "@pop"]
439
+ ],
440
+ regexpcomment: [
441
+ [/[^)]+/, "comment"],
442
+ [/\)/, { token: "regexp.escape.control", next: "@pop" }]
443
+ ],
444
+ // % quoted strings
445
+ // A bit repetitive since we need to often special case the kind of ending delimiter
446
+ pstring: [
447
+ [/%([qws])\(/, { token: "string.$1.delim", switchTo: "@qstring.$1.(.)" }],
448
+ [/%([qws])\[/, { token: "string.$1.delim", switchTo: "@qstring.$1.[.]" }],
449
+ [/%([qws])\{/, { token: "string.$1.delim", switchTo: "@qstring.$1.{.}" }],
450
+ [/%([qws])</, { token: "string.$1.delim", switchTo: "@qstring.$1.<.>" }],
451
+ [/%([qws])(@delim)/, { token: "string.$1.delim", switchTo: "@qstring.$1.$2.$2" }],
452
+ [/%r\(/, { token: "regexp.delim", switchTo: "@pregexp.(.)" }],
453
+ [/%r\[/, { token: "regexp.delim", switchTo: "@pregexp.[.]" }],
454
+ [/%r\{/, { token: "regexp.delim", switchTo: "@pregexp.{.}" }],
455
+ [/%r</, { token: "regexp.delim", switchTo: "@pregexp.<.>" }],
456
+ [/%r(@delim)/, { token: "regexp.delim", switchTo: "@pregexp.$1.$1" }],
457
+ [/%(x|W|Q?)\(/, { token: "string.$1.delim", switchTo: "@qqstring.$1.(.)" }],
458
+ [/%(x|W|Q?)\[/, { token: "string.$1.delim", switchTo: "@qqstring.$1.[.]" }],
459
+ [/%(x|W|Q?)\{/, { token: "string.$1.delim", switchTo: "@qqstring.$1.{.}" }],
460
+ [/%(x|W|Q?)</, { token: "string.$1.delim", switchTo: "@qqstring.$1.<.>" }],
461
+ [/%(x|W|Q?)(@delim)/, { token: "string.$1.delim", switchTo: "@qqstring.$1.$2.$2" }],
462
+ [/%([rqwsxW]|Q?)./, { token: "invalid", next: "@pop" }],
463
+ // recover
464
+ [/./, { token: "invalid", next: "@pop" }]
465
+ // recover
466
+ ],
467
+ // non-expanded quoted string.
468
+ // qstring.<kind>.<open>.<close>
469
+ // kind = q|w|s (single quote, array, symbol)
470
+ // open = open delimiter
471
+ // close = close delimiter
472
+ qstring: [
473
+ [/\\$/, "string.$S2.escape"],
474
+ [/\\./, "string.$S2.escape"],
475
+ [
476
+ /./,
477
+ {
478
+ cases: {
479
+ "$#==$S4": { token: "string.$S2.delim", next: "@pop" },
480
+ "$#==$S3": { token: "string.$S2.delim", next: "@push" },
481
+ // nested delimiters are allowed..
482
+ "@default": "string.$S2"
483
+ }
484
+ }
485
+ ]
486
+ ],
487
+ // expanded quoted string.
488
+ // qqstring.<kind>.<open>.<close>
489
+ // kind = Q|W|x (double quote, array, command)
490
+ // open = open delimiter
491
+ // close = close delimiter
492
+ qqstring: [[/#/, "string.$S2.escape", "@interpolated"], { include: "@qstring" }],
493
+ // whitespace & comments
494
+ whitespace: [
495
+ [/[ \t\r\n]+/, ""],
496
+ [/^\s*=begin\b/, "comment", "@comment"],
497
+ [/#.*$/, "comment"]
498
+ ],
499
+ comment: [
500
+ [/[^=]+/, "comment"],
501
+ [/^\s*=begin\b/, "comment.invalid"],
502
+ // nested comment
503
+ [/^\s*=end\b.*/, "comment", "@pop"],
504
+ [/[=]/, "comment"]
505
+ ]
506
+ }
507
+ };
508
+ export {
509
+ e as conf,
510
+ t as language
511
+ };