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