monaco-editor11 1.0.0 → 1.0.1

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