datacontract-editor 0.1.11 → 0.1.12

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 (94) hide show
  1. package/README.md +1 -3
  2. package/bin/datacontract-editor.js +73 -29
  3. package/dist/assets/editor.worker-4.7.0.js +30 -9034
  4. package/dist/assets/yaml.worker-4.7.0.js +424 -33283
  5. package/dist/datacontract-editor.css +2 -1
  6. package/dist/datacontract-editor.es.js +82723 -81113
  7. package/dist/monaco-4.7.0.js +114767 -125937
  8. package/dist/rolldown-runtime-DY7j01NX.js +30 -0
  9. package/package.json +12 -12
  10. package/dist/abap-Bs8kvjsq.js +0 -1398
  11. package/dist/apex-Dspwrl5m.js +0 -326
  12. package/dist/azcli-k1BiOau1.js +0 -68
  13. package/dist/bat-BIP72KWc.js +0 -100
  14. package/dist/bicep-VhQeYhS3.js +0 -102
  15. package/dist/cameligo-DnuAXtHg.js +0 -174
  16. package/dist/clojure-BAuDPsal.js +0 -761
  17. package/dist/coffee-BV06qSnj.js +0 -232
  18. package/dist/cpp-Cz8Jeyrf.js +0 -389
  19. package/dist/csharp-F6hhlXFb.js +0 -326
  20. package/dist/csp-KzlEHCyI.js +0 -53
  21. package/dist/css-e4FKntZ3.js +0 -187
  22. package/dist/cssMode-B1QSDB35.js +0 -1618
  23. package/dist/cypher-CpvDGKRr.js +0 -263
  24. package/dist/dart-DdHeFWR0.js +0 -281
  25. package/dist/dockerfile-aoNXDcio.js +0 -130
  26. package/dist/ecl-C4Q0DYuA.js +0 -456
  27. package/dist/elixir-C9X42b0T.js +0 -569
  28. package/dist/flow9-Bff42pfB.js +0 -142
  29. package/dist/freemarker2-DeO1_SUs.js +0 -989
  30. package/dist/fsharp-C6vPAsHG.js +0 -217
  31. package/dist/go-DEr8zx9f.js +0 -218
  32. package/dist/graphql-BiNBBRFh.js +0 -151
  33. package/dist/handlebars-BWm3cK1O.js +0 -419
  34. package/dist/hcl-2T9lKuFg.js +0 -183
  35. package/dist/html-C8E5HqOh.js +0 -308
  36. package/dist/htmlMode-azLSEeE2.js +0 -1628
  37. package/dist/ini-CZGtssYM.js +0 -71
  38. package/dist/java-B260NeH3.js +0 -232
  39. package/dist/javascript-CkO57ldU.js +0 -70
  40. package/dist/jsonMode-D6ZzTi4q.js +0 -2051
  41. package/dist/julia-kuNLM9c5.js +0 -511
  42. package/dist/kotlin-Bz6kAefA.js +0 -253
  43. package/dist/less-AZUtS89I.js +0 -162
  44. package/dist/lexon-BcmgnyRb.js +0 -157
  45. package/dist/liquid-BBvOrvTW.js +0 -240
  46. package/dist/lua-Dz1RbATg.js +0 -162
  47. package/dist/m3-CIMooLFn.js +0 -210
  48. package/dist/markdown-C1BsCK9P.js +0 -229
  49. package/dist/mdx-T-759RLL.js +0 -165
  50. package/dist/mips-BovsnfLQ.js +0 -198
  51. package/dist/msdax-CiRB2ZB-.js +0 -375
  52. package/dist/mysql-BwdpPE19.js +0 -878
  53. package/dist/objective-c-D4nfHfso.js +0 -183
  54. package/dist/pascal--j5-PYtz.js +0 -251
  55. package/dist/pascaligo-C7TcJxNL.js +0 -164
  56. package/dist/perl-BzEWqUb5.js +0 -626
  57. package/dist/pgsql-B_KZ0mGX.js +0 -851
  58. package/dist/php-A19QHzQV.js +0 -500
  59. package/dist/pla-COeKY1hA.js +0 -137
  60. package/dist/postiats-BfMp7zJL.js +0 -907
  61. package/dist/powerquery-B0TS_5Gb.js +0 -890
  62. package/dist/powershell-5jSbKdYB.js +0 -239
  63. package/dist/protobuf-YgnOutn3.js +0 -420
  64. package/dist/pug-DLej6kn5.js +0 -402
  65. package/dist/python-BFl6pUvy.js +0 -301
  66. package/dist/qsharp-AhjqtSHB.js +0 -301
  67. package/dist/r-D-F4P80w.js +0 -243
  68. package/dist/razor-BisT8Eyw.js +0 -550
  69. package/dist/redis-hwwIlMnV.js +0 -302
  70. package/dist/redshift-Bcm_kjEG.js +0 -809
  71. package/dist/restructuredtext-CrdzfPP-.js +0 -174
  72. package/dist/ruby-QC2UNm1s.js +0 -511
  73. package/dist/rust-5aqiQ3L5.js +0 -343
  74. package/dist/sb-B1g1ZfLJ.js +0 -115
  75. package/dist/scala-C2U4R5Gb.js +0 -370
  76. package/dist/scheme-DeFRbslr.js +0 -108
  77. package/dist/scss-RSTCiCmI.js +0 -262
  78. package/dist/shell-BpF-iNu8.js +0 -221
  79. package/dist/solidity-C00r2mbQ.js +0 -1367
  80. package/dist/sophia-DVW5ZKDB.js +0 -199
  81. package/dist/sparql-B0nmpxeX.js +0 -201
  82. package/dist/sql-CJwKPERn.js +0 -853
  83. package/dist/st-DPlKG5DT.js +0 -416
  84. package/dist/swift-YZBAbVHV.js +0 -309
  85. package/dist/systemverilog-CDQSaH63.js +0 -576
  86. package/dist/tcl-Dlu8sp6Q.js +0 -232
  87. package/dist/tsMode-CXX_kvIQ.js +0 -933
  88. package/dist/twig-C5TO7-kw.js +0 -392
  89. package/dist/typescript-ST9WAw3B.js +0 -343
  90. package/dist/typespec-BsmjDEu7.js +0 -117
  91. package/dist/vb-ChHvIDrk.js +0 -372
  92. package/dist/wgsl-XEp1ju8c.js +0 -439
  93. package/dist/xml-O0qUeKUc.js +0 -95
  94. package/dist/yaml-CLIJKwO6.js +0 -206
@@ -1,174 +0,0 @@
1
- var 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
- var 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
- };