@lvce-editor/shared-process 0.11.12 → 0.12.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.
- package/config/defaultKeyBindings.json +5 -0
- package/config/defaultSettings.json +4 -0
- package/config/fileMap.json +1 -2
- package/extensions/builtin.language-basics-css/README.md +2 -0
- package/extensions/builtin.language-basics-css/src/tokenizeCss.js +7 -0
- package/extensions/builtin.language-basics-dotenv/extension.json +7 -1
- package/extensions/builtin.language-basics-graphql/extension.json +1 -1
- package/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +408 -4
- package/extensions/builtin.language-basics-html/src/tokenizeHtml.js +99 -4
- package/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +61 -2
- package/extensions/builtin.language-basics-json/extension.json +6 -1
- package/extensions/builtin.language-basics-json/src/tokenizeJson.js +27 -0
- package/extensions/builtin.language-basics-jsx/README.md +14 -0
- package/extensions/builtin.language-basics-jsx/extension.json +13 -0
- package/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +648 -0
- package/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +52 -1
- package/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +105 -2
- package/extensions/builtin.language-basics-mdx/README.md +14 -0
- package/extensions/builtin.language-basics-mdx/extension.json +12 -0
- package/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +395 -0
- package/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +38 -15
- package/extensions/builtin.language-basics-toml/src/tokenizeToml.js +29 -1
- package/extensions/builtin.language-basics-typescript/extension.json +1 -1
- package/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +177 -11
- package/extensions/builtin.language-basics-vue/README.md +14 -0
- package/extensions/builtin.language-basics-vue/extension.json +13 -0
- package/extensions/builtin.language-basics-vue/src/tokenizeVue.js +327 -0
- package/extensions/builtin.language-basics-xml/extension.json +3 -2
- package/extensions/builtin.language-basics-xml/src/tokenizeXml.js +26 -3
- package/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +9 -2
- package/extensions/builtin.theme-atom-one-dark/color-theme.json +20 -0
- package/extensions/builtin.theme-ayu/color-theme.json +10 -1
- package/extensions/builtin.theme-cobalt2/color-theme.json +20 -0
- package/extensions/builtin.theme-gruvbox/color-theme.json +20 -0
- package/extensions/builtin.theme-noctis-uva/color-theme.json +20 -0
- package/extensions/builtin.theme-palenight/color-theme.json +8 -0
- package/extensions/builtin.theme-slime/color-theme.json +16 -0
- package/extensions/builtin.vscode-icons/icon-theme.json +40 -2
- package/extensions/builtin.vscode-icons/icons/file_type_bazel_ignore.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_bazel_version.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_eleventy.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_eleventy2.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_light_eleventy.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_light_eleventy2.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_light_rome.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_light_tree.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_mondoo.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_nuxt.svg +1 -1
- package/extensions/builtin.vscode-icons/icons/file_type_rome.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_sapphire_framework_cli.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_shellcheck.svg +91 -0
- package/extensions/builtin.vscode-icons/icons/file_type_shuttle.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/file_type_tree.svg +1 -0
- package/extensions/builtin.vscode-icons/icons/folder_type_nuxt.svg +1 -1
- package/extensions/builtin.vscode-icons/icons/folder_type_nuxt_opened.svg +1 -1
- package/package.json +9 -8
- package/src/parts/CleanStack/CleanStack.js +5 -0
- package/src/parts/Cli/Cli.js +5 -4
- package/src/parts/CliCommandType/CliCommandType.js +10 -0
- package/src/parts/CliInstall/CliInstall.js +3 -2
- package/src/parts/CliLink/CliLink.js +3 -2
- package/src/parts/CliList/CliList.js +3 -1
- package/src/parts/ClipBoard/ClipBoard.js +3 -2
- package/src/parts/ClipBoard/ClipBoardGnome.js +15 -31
- package/src/parts/CommandNotFoundError/CommandNotFoundError.js +9 -0
- package/src/parts/DesktopType/DesktopType.js +3 -0
- package/src/parts/Download/Download.js +1 -1
- package/src/parts/DownloadAndExtract/DownloadAndExtract.js +2 -2
- package/src/parts/Error/FileSystemError.js +1 -1
- package/src/parts/ErrorCodes/ErrorCodes.js +2 -0
- package/src/parts/ErrorHandling/ErrorHandling.js +4 -3
- package/src/parts/ExecCommand/ExecCommand.js +25 -0
- package/src/parts/ExecPromise/ExecPromise.js +4 -0
- package/src/parts/ExitCode/ExitCode.js +5 -0
- package/src/parts/ExportStatic/ExportStatic.js +2 -2
- package/src/parts/ExtensionHost/ExtensionHost.ipc.js +0 -1
- package/src/parts/ExtensionHost/ExtensionHost.js +1 -1
- package/src/parts/ExtensionHostIpc/ExtensionHostIpcWithChildProcess.js +3 -8
- package/src/parts/ExtensionHostIpc/ExtensionHostIpcWithWorker.js +3 -7
- package/src/parts/ExtensionInstallFromFile/ExtensionInstallFromFile.js +2 -5
- package/src/parts/ExtensionInstallFromGitHub/ExtensionInstallFromGitHub.js +1 -1
- package/src/parts/ExtensionInstallFromUrl/ExtensionInstallFromUrl.js +3 -3
- package/src/parts/ExtensionLink/ExtensionLink.js +19 -0
- package/src/parts/ExtensionManagement/ExtensionManagement.ipc.js +1 -1
- package/src/parts/ExtensionManagement/ExtensionManagementColorTheme.js +3 -2
- package/src/parts/ExtensionManagement/ExtensionManagementLanguages.js +7 -14
- package/src/parts/ExtensionManifest/ExtensionManifest.js +14 -4
- package/src/parts/ExtractZip/ExtractZip.js +1 -1
- package/src/parts/FileSystem/FileSystem.js +0 -1
- package/src/parts/GetResponse/GetResponse.js +2 -1
- package/src/parts/GitLsFiles/GitLsFiles.ipc.js +2 -0
- package/src/parts/GitLsFiles/GitLsFiles.js +21 -5
- package/src/parts/Hash/Hash.js +7 -0
- package/src/parts/IpcChild/IpcChild.js +6 -0
- package/src/parts/IpcChildModule/IpcChildModule.js +12 -0
- package/src/parts/IpcChildType/IpcChildType.js +13 -0
- package/src/parts/IpcChildWithNodeForkedProcess/IpcChildWithNodeForkedProcess.js +19 -0
- package/src/parts/IpcChildWithNodeWorker/IpcChildWithNodeWorker.js +27 -0
- package/src/parts/MergeStacks/MergeStacks.js +19 -0
- package/src/parts/ModuleMap/ModuleMap.js +4 -1
- package/src/parts/NormalizeErrorLine/NormalizeErrorLine.js +9 -0
- package/src/parts/OutputChannel/OutputChannel.ipc.js +1 -1
- package/src/parts/ParentIpc/ParentIpc.js +6 -10
- package/src/parts/ParseInt/ParseInt.js +3 -0
- package/src/parts/Platform/Platform.js +16 -21
- package/src/parts/Preferences/Preferences.js +2 -1
- package/src/parts/PrettyError/PrettyError.js +12 -23
- package/src/parts/PrintPrettyError/PrintPrettyError.js +3 -0
- package/src/parts/Process/Process.js +2 -2
- package/src/parts/ProtocolType/ProtocolType.js +3 -0
- package/src/parts/RecentlyOpened/RecentlyOpened.js +1 -1
- package/src/parts/Stats/Stats.js +8 -11
- package/src/parts/SymLink/SymLink.js +2 -14
- package/src/parts/TextDocument/TextDocument.js +3 -1
- package/src/parts/VError/VError.js +5 -22
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @enum number
|
|
3
|
+
*/
|
|
4
|
+
const State = {
|
|
5
|
+
TopLevelContent: 1,
|
|
6
|
+
AfterOpeningAngleBracket: 2,
|
|
7
|
+
InsideOpeningTag: 3,
|
|
8
|
+
InsideOpeningTagAndHasSeenWhitespace: 4,
|
|
9
|
+
AfterClosingTagAngleBrackets: 5,
|
|
10
|
+
AfterClosingTagName: 6,
|
|
11
|
+
AfterAttributeName: 7,
|
|
12
|
+
AfterAttributeEqualSign: 8,
|
|
13
|
+
InsideAttributeDoubleQuote: 9,
|
|
14
|
+
InsideBlockComment: 10,
|
|
15
|
+
None: 11,
|
|
16
|
+
InsideDoubleQuoteString: 12,
|
|
17
|
+
InsideSingleQuoteString: 13,
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const StateMap = {}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @enum number
|
|
24
|
+
*/
|
|
25
|
+
export const TokenType = {
|
|
26
|
+
None: 99999999,
|
|
27
|
+
Numeric: 30,
|
|
28
|
+
String: 50,
|
|
29
|
+
Whitespace: 0,
|
|
30
|
+
Comment: 60,
|
|
31
|
+
Text: 117,
|
|
32
|
+
PunctuationTag: 228,
|
|
33
|
+
TagName: 118,
|
|
34
|
+
AttributeName: 119,
|
|
35
|
+
Punctuation: 10,
|
|
36
|
+
Error: 141,
|
|
37
|
+
PunctuationString: 11,
|
|
38
|
+
NewLine: 891,
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const TokenMap = {
|
|
42
|
+
[TokenType.None]: 'None',
|
|
43
|
+
[TokenType.Numeric]: 'Numeric',
|
|
44
|
+
[TokenType.String]: 'String',
|
|
45
|
+
[TokenType.Whitespace]: 'Whitespace',
|
|
46
|
+
[TokenType.Comment]: 'Comment',
|
|
47
|
+
[TokenType.Text]: 'Text',
|
|
48
|
+
[TokenType.PunctuationTag]: 'PunctuationTag',
|
|
49
|
+
[TokenType.TagName]: 'TagName',
|
|
50
|
+
[TokenType.AttributeName]: 'AttributeName',
|
|
51
|
+
[TokenType.Punctuation]: 'Punctuation',
|
|
52
|
+
[TokenType.Error]: 'Error',
|
|
53
|
+
[TokenType.PunctuationString]: 'PunctuationString',
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const RE_ANGLE_BRACKET_CLOSE = /^>/
|
|
57
|
+
const RE_ANGLE_BRACKET_ONLY = /^</
|
|
58
|
+
const RE_ANGLE_BRACKET_OPEN = /^</
|
|
59
|
+
const RE_ANGLE_BRACKET_OPEN_TAG = /^<(?![\s!])/
|
|
60
|
+
const RE_ANY_TEXT = /^[^\n]+/
|
|
61
|
+
const RE_ATTRIBUTE_NAME = /^[a-zA-Z\d\-\:]+/
|
|
62
|
+
const RE_BLOCK_COMMENT_CONTENT_1 = /^.+?(?=-->)/s
|
|
63
|
+
const RE_BLOCK_COMMENT_CONTENT_2 = /^.+$/s
|
|
64
|
+
const RE_BLOCK_COMMENT_END = /^-->/
|
|
65
|
+
const RE_BLOCK_COMMENT_START = /^<!--/
|
|
66
|
+
const RE_DOCTYPE = /^<!(?=\w)/
|
|
67
|
+
const RE_DASH_DASH = /^\-\-/
|
|
68
|
+
const RE_DOUBLE_QUOTE = /^"/
|
|
69
|
+
const RE_EQUAL_SIGN = /^=/
|
|
70
|
+
const RE_EXCLAMATION_MARK = /^!/
|
|
71
|
+
const RE_INVALID_INSIDE_ClOSING_TAG = /^[^a-zA-Z>]/
|
|
72
|
+
const RE_INVALID_INSIDE_OPENING_TAG = /^[^a-zA-Z>]/
|
|
73
|
+
const RE_NEWLINE = /^\n/
|
|
74
|
+
const RE_NEWLINE_WHITESPACE = /^\n\s*/
|
|
75
|
+
const RE_NOT_TAGNAME = /^[^a-zA-Z\d]+/
|
|
76
|
+
const RE_PUNCTUATION = /^[<;'".,]/
|
|
77
|
+
const RE_PUNCTUATION_SELF_CLOSING = /^\/>/
|
|
78
|
+
const RE_SELF_CLOSING = /^\/>/
|
|
79
|
+
const RE_SINGLE_QUOTE = /^'/
|
|
80
|
+
const RE_SLASH = /^\//
|
|
81
|
+
const RE_STRING_DOUBLE_QUOTE_CONTENT = /^[^"]+/
|
|
82
|
+
const RE_STRING_SINGLE_QUOTE_CONTENT = /^[^']+/
|
|
83
|
+
const RE_TAG_TEXT = /^[^\s>]+/
|
|
84
|
+
const RE_TAGNAME = /^[!\w]+/
|
|
85
|
+
const RE_TEXT = /^[^<>\n]+/
|
|
86
|
+
const RE_WHITESPACE = /^\s+/
|
|
87
|
+
const RE_WORD = /^[^\s]+/
|
|
88
|
+
const RE_ATTRIBUTE_VALUE_UNQUOTED = /^[^<>]+/
|
|
89
|
+
|
|
90
|
+
export const initialLineState = {
|
|
91
|
+
state: State.TopLevelContent,
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
*
|
|
96
|
+
* @param {any} lineStateA
|
|
97
|
+
* @param {any} lineStateB
|
|
98
|
+
* @returns
|
|
99
|
+
*/
|
|
100
|
+
export const isLineStateEqual = (lineStateA, lineStateB) => {
|
|
101
|
+
return lineStateA.state === lineStateB.state
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export const hasArrayReturn = true
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
*
|
|
108
|
+
* @param {string} line
|
|
109
|
+
* @param {any} lineState
|
|
110
|
+
* @returns
|
|
111
|
+
*/
|
|
112
|
+
export const tokenizeLine = (line, lineState) => {
|
|
113
|
+
let next = null
|
|
114
|
+
let index = 0
|
|
115
|
+
let tokens = []
|
|
116
|
+
let token = TokenType.None
|
|
117
|
+
let state = lineState.state
|
|
118
|
+
while (index < line.length) {
|
|
119
|
+
const part = line.slice(index)
|
|
120
|
+
switch (state) {
|
|
121
|
+
case State.TopLevelContent:
|
|
122
|
+
if ((next = part.match(RE_ANGLE_BRACKET_OPEN_TAG))) {
|
|
123
|
+
token = TokenType.PunctuationTag
|
|
124
|
+
state = State.AfterOpeningAngleBracket
|
|
125
|
+
} else if ((next = part.match(RE_TEXT))) {
|
|
126
|
+
token = TokenType.Text
|
|
127
|
+
state = State.TopLevelContent
|
|
128
|
+
} else if ((next = part.match(RE_BLOCK_COMMENT_START))) {
|
|
129
|
+
token = TokenType.Comment
|
|
130
|
+
state = State.InsideBlockComment
|
|
131
|
+
} else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
132
|
+
token = TokenType.Text
|
|
133
|
+
state = State.TopLevelContent
|
|
134
|
+
} else if ((next = part.match(RE_DOCTYPE))) {
|
|
135
|
+
token = TokenType.PunctuationTag
|
|
136
|
+
state = State.AfterOpeningAngleBracket
|
|
137
|
+
} else if ((next = part.match(RE_ANGLE_BRACKET_OPEN))) {
|
|
138
|
+
token = TokenType.Text
|
|
139
|
+
state = State.TopLevelContent
|
|
140
|
+
} else {
|
|
141
|
+
part //?
|
|
142
|
+
throw new Error('no')
|
|
143
|
+
}
|
|
144
|
+
break
|
|
145
|
+
case State.AfterOpeningAngleBracket:
|
|
146
|
+
if ((next = part.match(RE_TAGNAME))) {
|
|
147
|
+
token = TokenType.TagName
|
|
148
|
+
state = State.InsideOpeningTag
|
|
149
|
+
} else if ((next = part.match(RE_SLASH))) {
|
|
150
|
+
token = TokenType.PunctuationTag
|
|
151
|
+
state = State.AfterClosingTagAngleBrackets
|
|
152
|
+
} else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
153
|
+
token = TokenType.PunctuationTag
|
|
154
|
+
state = State.TopLevelContent
|
|
155
|
+
} else if ((next = part.match(RE_ANGLE_BRACKET_OPEN))) {
|
|
156
|
+
token = TokenType.PunctuationTag
|
|
157
|
+
state = State.AfterOpeningAngleBracket
|
|
158
|
+
} else if ((next = part.match(RE_ANY_TEXT))) {
|
|
159
|
+
token = TokenType.Text
|
|
160
|
+
state = State.TopLevelContent
|
|
161
|
+
} else {
|
|
162
|
+
part //?
|
|
163
|
+
throw new Error('no')
|
|
164
|
+
}
|
|
165
|
+
break
|
|
166
|
+
case State.InsideOpeningTag:
|
|
167
|
+
if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
168
|
+
token = TokenType.PunctuationTag
|
|
169
|
+
state = State.TopLevelContent
|
|
170
|
+
} else if ((next = part.match(RE_EXCLAMATION_MARK))) {
|
|
171
|
+
token = TokenType.PunctuationTag
|
|
172
|
+
state = State.InsideOpeningTag
|
|
173
|
+
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
174
|
+
token = TokenType.Whitespace
|
|
175
|
+
state = State.InsideOpeningTagAndHasSeenWhitespace
|
|
176
|
+
} else if ((next = part.match(RE_DASH_DASH))) {
|
|
177
|
+
token = TokenType.Comment
|
|
178
|
+
state = State.InsideBlockComment
|
|
179
|
+
} else if ((next = part.match(RE_TAG_TEXT))) {
|
|
180
|
+
token = TokenType.Text
|
|
181
|
+
state = State.InsideOpeningTag
|
|
182
|
+
} else {
|
|
183
|
+
part //?
|
|
184
|
+
throw new Error('no')
|
|
185
|
+
}
|
|
186
|
+
break
|
|
187
|
+
case State.AfterClosingTagAngleBrackets:
|
|
188
|
+
if ((next = part.match(RE_TAGNAME))) {
|
|
189
|
+
token = TokenType.TagName
|
|
190
|
+
state = State.AfterClosingTagName
|
|
191
|
+
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
192
|
+
token = TokenType.Whitespace
|
|
193
|
+
state = State.TopLevelContent
|
|
194
|
+
} else if ((next = part.match(RE_ANY_TEXT))) {
|
|
195
|
+
token = TokenType.Text
|
|
196
|
+
state = State.TopLevelContent
|
|
197
|
+
} else {
|
|
198
|
+
part //?
|
|
199
|
+
throw new Error('no')
|
|
200
|
+
}
|
|
201
|
+
break
|
|
202
|
+
case State.AfterClosingTagName:
|
|
203
|
+
if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
204
|
+
token = TokenType.PunctuationTag
|
|
205
|
+
state = State.TopLevelContent
|
|
206
|
+
} else if ((next = part.match(RE_TEXT))) {
|
|
207
|
+
token = TokenType.Text
|
|
208
|
+
state = State.TopLevelContent
|
|
209
|
+
} else {
|
|
210
|
+
throw new Error('no')
|
|
211
|
+
}
|
|
212
|
+
break
|
|
213
|
+
case State.InsideOpeningTagAndHasSeenWhitespace:
|
|
214
|
+
if ((next = part.match(RE_ATTRIBUTE_NAME))) {
|
|
215
|
+
token = TokenType.AttributeName
|
|
216
|
+
state = State.AfterAttributeName
|
|
217
|
+
} else if ((next = part.match(RE_SELF_CLOSING))) {
|
|
218
|
+
token = TokenType.PunctuationTag
|
|
219
|
+
state = State.TopLevelContent
|
|
220
|
+
} else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
221
|
+
token = TokenType.PunctuationTag
|
|
222
|
+
state = State.TopLevelContent
|
|
223
|
+
} else if ((next = part.match(RE_TAG_TEXT))) {
|
|
224
|
+
token = TokenType.Text
|
|
225
|
+
state = State.TopLevelContent
|
|
226
|
+
} else {
|
|
227
|
+
part //?
|
|
228
|
+
throw new Error('no')
|
|
229
|
+
}
|
|
230
|
+
break
|
|
231
|
+
case State.AfterAttributeName:
|
|
232
|
+
if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
233
|
+
token = TokenType.PunctuationTag
|
|
234
|
+
state = State.TopLevelContent
|
|
235
|
+
} else if ((next = part.match(RE_EQUAL_SIGN))) {
|
|
236
|
+
token = TokenType.Punctuation
|
|
237
|
+
state = State.AfterAttributeEqualSign
|
|
238
|
+
} else if ((next = part.match(RE_DOUBLE_QUOTE))) {
|
|
239
|
+
token = TokenType.PunctuationString
|
|
240
|
+
state = State.InsideDoubleQuoteString
|
|
241
|
+
} else if ((next = part.match(RE_SINGLE_QUOTE))) {
|
|
242
|
+
token = TokenType.PunctuationString
|
|
243
|
+
state = State.InsideSingleQuoteString
|
|
244
|
+
} else if ((next = part.match(RE_TAG_TEXT))) {
|
|
245
|
+
token = TokenType.Text
|
|
246
|
+
state = State.InsideOpeningTag
|
|
247
|
+
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
248
|
+
token = TokenType.Whitespace
|
|
249
|
+
state = State.InsideOpeningTagAndHasSeenWhitespace
|
|
250
|
+
} else {
|
|
251
|
+
// TODO check quotation mark
|
|
252
|
+
part //?
|
|
253
|
+
throw new Error('no')
|
|
254
|
+
}
|
|
255
|
+
break
|
|
256
|
+
case State.AfterAttributeEqualSign:
|
|
257
|
+
if ((next = part.match(RE_DOUBLE_QUOTE))) {
|
|
258
|
+
token = TokenType.PunctuationString
|
|
259
|
+
state = State.InsideDoubleQuoteString
|
|
260
|
+
} else if ((next = part.match(RE_SINGLE_QUOTE))) {
|
|
261
|
+
token = TokenType.PunctuationString
|
|
262
|
+
state = State.InsideSingleQuoteString
|
|
263
|
+
} else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
264
|
+
token = TokenType.PunctuationTag
|
|
265
|
+
state = State.TopLevelContent
|
|
266
|
+
} else if ((next = part.match(RE_ATTRIBUTE_VALUE_UNQUOTED))) {
|
|
267
|
+
token = TokenType.String
|
|
268
|
+
state = State.InsideOpeningTag
|
|
269
|
+
} else {
|
|
270
|
+
part
|
|
271
|
+
throw new Error('no')
|
|
272
|
+
}
|
|
273
|
+
break
|
|
274
|
+
case State.InsideDoubleQuoteString:
|
|
275
|
+
if ((next = part.match(RE_DOUBLE_QUOTE))) {
|
|
276
|
+
token = TokenType.PunctuationString
|
|
277
|
+
state = State.InsideOpeningTag
|
|
278
|
+
} else if ((next = part.match(RE_STRING_DOUBLE_QUOTE_CONTENT))) {
|
|
279
|
+
token = TokenType.String
|
|
280
|
+
state = State.InsideDoubleQuoteString
|
|
281
|
+
} else {
|
|
282
|
+
throw new Error('no')
|
|
283
|
+
}
|
|
284
|
+
break
|
|
285
|
+
case State.InsideSingleQuoteString:
|
|
286
|
+
if ((next = part.match(RE_SINGLE_QUOTE))) {
|
|
287
|
+
token = TokenType.PunctuationString
|
|
288
|
+
state = State.InsideOpeningTag
|
|
289
|
+
} else if ((next = part.match(RE_STRING_SINGLE_QUOTE_CONTENT))) {
|
|
290
|
+
token = TokenType.String
|
|
291
|
+
state = State.InsideSingleQuoteString
|
|
292
|
+
} else {
|
|
293
|
+
throw new Error('no')
|
|
294
|
+
}
|
|
295
|
+
break
|
|
296
|
+
case State.InsideBlockComment:
|
|
297
|
+
part
|
|
298
|
+
if ((next = part.match(RE_BLOCK_COMMENT_CONTENT_1))) {
|
|
299
|
+
token = TokenType.Comment
|
|
300
|
+
state = State.InsideBlockComment
|
|
301
|
+
} else if ((next = part.match(RE_BLOCK_COMMENT_END))) {
|
|
302
|
+
token = TokenType.Comment
|
|
303
|
+
state = State.TopLevelContent
|
|
304
|
+
} else if ((next = part.match(RE_BLOCK_COMMENT_CONTENT_2))) {
|
|
305
|
+
token = TokenType.Comment
|
|
306
|
+
state = State.InsideBlockComment
|
|
307
|
+
} else {
|
|
308
|
+
throw new Error('no')
|
|
309
|
+
}
|
|
310
|
+
break
|
|
311
|
+
default:
|
|
312
|
+
state
|
|
313
|
+
throw new Error('no')
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
const tokenLength = next[0].length
|
|
317
|
+
index += tokenLength
|
|
318
|
+
tokens.push(token, tokenLength)
|
|
319
|
+
}
|
|
320
|
+
if (state === State.AfterClosingTagAngleBrackets) {
|
|
321
|
+
state = State.TopLevelContent
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
state,
|
|
325
|
+
tokens,
|
|
326
|
+
}
|
|
327
|
+
}
|
|
@@ -56,9 +56,10 @@ export const TokenMap = {
|
|
|
56
56
|
const RE_ANGLE_BRACKET_CLOSE = /^>/
|
|
57
57
|
const RE_ANGLE_BRACKET_ONLY = /^</
|
|
58
58
|
const RE_ANGLE_BRACKET_OPEN = /^</
|
|
59
|
-
const RE_ANGLE_BRACKET_OPEN_TAG = /^<(
|
|
59
|
+
const RE_ANGLE_BRACKET_OPEN_TAG = /^<(?![\s!\?])/
|
|
60
|
+
const RE_ANGLE_BRACKET_QUESTION_MARK = /^<\?/
|
|
60
61
|
const RE_ANY_TEXT = /^[^\n]+/
|
|
61
|
-
const RE_ATTRIBUTE_NAME = /^[a-zA-Z\d
|
|
62
|
+
const RE_ATTRIBUTE_NAME = /^[a-zA-Z\d\-\:\_]+/
|
|
62
63
|
const RE_BLOCK_COMMENT_CONTENT = /^.(?:.*?)(?=-->|$)/s
|
|
63
64
|
const RE_BLOCK_COMMENT_END = /^-->/
|
|
64
65
|
const RE_BLOCK_COMMENT_START = /^<!--/
|
|
@@ -74,6 +75,7 @@ const RE_NOT_TAGNAME = /^[^a-zA-Z\d]+/
|
|
|
74
75
|
const RE_PUNCTUATION = /^[<;'".,]/
|
|
75
76
|
const RE_PUNCTUATION_SELF_CLOSING = /^\/>/
|
|
76
77
|
const RE_SELF_CLOSING = /^\/>/
|
|
78
|
+
const RE_QUESTION_MARK_CLOSING = /^\?>/
|
|
77
79
|
const RE_SINGLE_QUOTE = /^'/
|
|
78
80
|
const RE_SLASH = /^\//
|
|
79
81
|
const RE_STRING_DOUBLE_QUOTE_CONTENT = /^[^"]+/
|
|
@@ -84,6 +86,9 @@ const RE_TEXT = /^[^<>\n]+/
|
|
|
84
86
|
const RE_WHITESPACE = /^\s+/
|
|
85
87
|
const RE_WORD = /^[^\s]+/
|
|
86
88
|
const RE_QUESTION_MARK_TAG_NAME = /^\?\w+/
|
|
89
|
+
const RE_BLOCK_COMMENT_CONTENT_1 = /^.+?(?=-->)/s
|
|
90
|
+
const RE_BLOCK_COMMENT_CONTENT_2 = /^.+$/s
|
|
91
|
+
const RE_SPECIAL_TAG = /^<!(?=\w)/
|
|
87
92
|
|
|
88
93
|
export const initialLineState = {
|
|
89
94
|
state: State.TopLevelContent,
|
|
@@ -123,9 +128,18 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
123
128
|
} else if ((next = part.match(RE_TEXT))) {
|
|
124
129
|
token = TokenType.Text
|
|
125
130
|
state = State.TopLevelContent
|
|
131
|
+
} else if ((next = part.match(RE_BLOCK_COMMENT_START))) {
|
|
132
|
+
token = TokenType.Comment
|
|
133
|
+
state = State.InsideBlockComment
|
|
126
134
|
} else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
127
135
|
token = TokenType.Text
|
|
128
136
|
state = State.TopLevelContent
|
|
137
|
+
} else if ((next = part.match(RE_SPECIAL_TAG))) {
|
|
138
|
+
token = TokenType.PunctuationTag
|
|
139
|
+
state = State.AfterOpeningAngleBracket
|
|
140
|
+
} else if ((next = part.match(RE_ANGLE_BRACKET_QUESTION_MARK))) {
|
|
141
|
+
token = TokenType.PunctuationTag
|
|
142
|
+
state = State.AfterOpeningAngleBracket
|
|
129
143
|
} else if ((next = part.match(RE_ANGLE_BRACKET_OPEN))) {
|
|
130
144
|
token = TokenType.Text
|
|
131
145
|
state = State.TopLevelContent
|
|
@@ -159,6 +173,9 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
159
173
|
if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
160
174
|
token = TokenType.PunctuationTag
|
|
161
175
|
state = State.TopLevelContent
|
|
176
|
+
} else if ((next = part.match(RE_QUESTION_MARK_CLOSING))) {
|
|
177
|
+
token = TokenType.PunctuationTag
|
|
178
|
+
state = State.TopLevelContent
|
|
162
179
|
} else if ((next = part.match(RE_EXCLAMATION_MARK))) {
|
|
163
180
|
token = TokenType.PunctuationTag
|
|
164
181
|
state = State.InsideOpeningTag
|
|
@@ -206,6 +223,9 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
206
223
|
} else if ((next = part.match(RE_SELF_CLOSING))) {
|
|
207
224
|
token = TokenType.PunctuationTag
|
|
208
225
|
state = State.TopLevelContent
|
|
226
|
+
} else if ((next = part.match(RE_QUESTION_MARK_CLOSING))) {
|
|
227
|
+
token = TokenType.PunctuationTag
|
|
228
|
+
state = State.TopLevelContent
|
|
209
229
|
} else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
|
|
210
230
|
token = TokenType.PunctuationTag
|
|
211
231
|
state = State.TopLevelContent
|
|
@@ -280,12 +300,15 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
280
300
|
}
|
|
281
301
|
break
|
|
282
302
|
case State.InsideBlockComment:
|
|
283
|
-
if ((next = part.match(
|
|
303
|
+
if ((next = part.match(RE_BLOCK_COMMENT_CONTENT_1))) {
|
|
284
304
|
token = TokenType.Comment
|
|
285
305
|
state = State.InsideBlockComment
|
|
286
306
|
} else if ((next = part.match(RE_BLOCK_COMMENT_END))) {
|
|
287
307
|
token = TokenType.Comment
|
|
288
308
|
state = State.TopLevelContent
|
|
309
|
+
} else if ((next = part.match(RE_BLOCK_COMMENT_CONTENT_2))) {
|
|
310
|
+
token = TokenType.Comment
|
|
311
|
+
state = State.InsideBlockComment
|
|
289
312
|
} else {
|
|
290
313
|
throw new Error('no')
|
|
291
314
|
}
|
|
@@ -74,7 +74,8 @@ const RE_SEMICOLON = /^;/
|
|
|
74
74
|
const RE_COMMA = /^,/
|
|
75
75
|
const RE_ANYTHING = /^.+/s
|
|
76
76
|
const RE_ANYTHING_BUT_COMMENT = /^[^#]+/
|
|
77
|
-
const RE_NUMERIC =
|
|
77
|
+
const RE_NUMERIC =
|
|
78
|
+
/^\-?(([0-9]+\.?[0-9]*)|(\.[0-9]+))(?=\s*$|\s+#|\s*[\[\]\{\}])/
|
|
78
79
|
const RE_ANYTHING_UNTIL_CLOSE_BRACE = /^[^\}]+/
|
|
79
80
|
const RE_BLOCK_COMMENT_START = /^\/\*/
|
|
80
81
|
const RE_BLOCK_COMMENT_END = /^\*\//
|
|
@@ -93,7 +94,7 @@ const RE_COMBINATOR = /^[\+\>\~]/
|
|
|
93
94
|
const RE_LANGUAGE_CONSTANT = /^(?:true|false|null)(?!#)/
|
|
94
95
|
const RE_COLON = /^:/
|
|
95
96
|
const RE_DASH = /^\-/
|
|
96
|
-
const RE_WORDS = /^[\w\s]*\w/
|
|
97
|
+
const RE_WORDS = /^[\w\s\-\.]*\w/
|
|
97
98
|
const RE_MULTI_LINE_STRING_START = /^(?:\||>\-|>)/
|
|
98
99
|
const RE_KEY_PRE = /^\s*(\-\s*)?/
|
|
99
100
|
const RE_SINGLE_QUOTE = /^'/
|
|
@@ -251,6 +252,12 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
251
252
|
token = TokenType.Comment
|
|
252
253
|
state = State.InsideLineComment
|
|
253
254
|
stack.push(State.AfterPipe)
|
|
255
|
+
} else if ((next = part.match(RE_DASH))) {
|
|
256
|
+
token = TokenType.Punctuation
|
|
257
|
+
state = State.AfterPipe
|
|
258
|
+
} else if ((next = part.match(RE_ANYTHING))) {
|
|
259
|
+
token = TokenType.Text
|
|
260
|
+
state = State.AfterPipe
|
|
254
261
|
} else {
|
|
255
262
|
throw new Error('no')
|
|
256
263
|
}
|
|
@@ -172,6 +172,26 @@
|
|
|
172
172
|
{
|
|
173
173
|
"name": "KeywordThis",
|
|
174
174
|
"foreground": "#E06C75"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"name": "KeywordFunction",
|
|
178
|
+
"foreground": "#C678DD"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "MarkdownLinkName",
|
|
182
|
+
"foreground": "#61AFEF"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "MarkdownLinkUrl",
|
|
186
|
+
"foreground": "#C678DD"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"name": "MarkdownString",
|
|
190
|
+
"foreground": "#ABB2BF"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "KeywordModifier",
|
|
194
|
+
"foreground": "#C678DD"
|
|
175
195
|
}
|
|
176
196
|
]
|
|
177
197
|
}
|
|
@@ -65,7 +65,8 @@
|
|
|
65
65
|
"TitleBarColorInactive": "",
|
|
66
66
|
"TitleBarItemHoverForeground": "rgba(0, 0, 0, 0.1)",
|
|
67
67
|
|
|
68
|
-
"TreeItemForeground": "#8a9199"
|
|
68
|
+
"TreeItemForeground": "#8a9199",
|
|
69
|
+
"TreeItemActiveBackground": "rgba(86, 114, 143, 0.12)"
|
|
69
70
|
},
|
|
70
71
|
"tokenColors": [
|
|
71
72
|
{
|
|
@@ -183,6 +184,14 @@
|
|
|
183
184
|
{
|
|
184
185
|
"name": "KeywordThis",
|
|
185
186
|
"foreground": "#55B4D4"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"name": "MarkdownLinkName",
|
|
190
|
+
"foreground": "#55B4D4"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "MarkdownLinkUrl",
|
|
194
|
+
"foreground": "#55B4D4"
|
|
186
195
|
}
|
|
187
196
|
]
|
|
188
197
|
}
|
|
@@ -155,6 +155,26 @@
|
|
|
155
155
|
{
|
|
156
156
|
"name": "KeywordOperator",
|
|
157
157
|
"foreground": "#FF9D00"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "KeywordFunction",
|
|
161
|
+
"foreground": "#FB94FF"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "MarkdownLinkName",
|
|
165
|
+
"foreground": "#A5FF90"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"name": "MarkdownLinkUrl",
|
|
169
|
+
"foreground": "#9EFFFF"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "Heading",
|
|
173
|
+
"foreground": "#FFC600"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "KeywordNew",
|
|
177
|
+
"foreground": "#FF9D00"
|
|
158
178
|
}
|
|
159
179
|
]
|
|
160
180
|
}
|
|
@@ -192,6 +192,26 @@
|
|
|
192
192
|
{
|
|
193
193
|
"name": "KeywordThis",
|
|
194
194
|
"foreground": "#D3869B"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"name": "KeywordFunction",
|
|
198
|
+
"foreground": "#EA6962"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"name": "MarkdownLinkName",
|
|
202
|
+
"foreground": "#D3869B"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"name": "MarkdownLinkUrl",
|
|
206
|
+
"foreground": "#A9B665"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"name": "MarkdownString",
|
|
210
|
+
"foreground": "#A9B665"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"name": "KeywordModifier",
|
|
214
|
+
"foreground": "#E78A4E"
|
|
195
215
|
}
|
|
196
216
|
]
|
|
197
217
|
}
|
|
@@ -179,6 +179,26 @@
|
|
|
179
179
|
{
|
|
180
180
|
"name": "KeywordThis",
|
|
181
181
|
"foreground": "#E66533"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "KeywordFunction",
|
|
185
|
+
"foreground": "#E66533"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "MarkdownLinkName",
|
|
189
|
+
"foreground": "#16A3B6"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"name": "MarkdownLinkUrl",
|
|
193
|
+
"foreground": "#49D6E9"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "Heading",
|
|
197
|
+
"foreground": "#DF769B"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"name": "KeywordImport",
|
|
201
|
+
"foreground": "#DF769B"
|
|
182
202
|
}
|
|
183
203
|
]
|
|
184
204
|
}
|
|
@@ -238,6 +238,22 @@
|
|
|
238
238
|
{
|
|
239
239
|
"name": "KeywordOperator",
|
|
240
240
|
"foreground": "#B4B4B4"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"name": "MarkdownString",
|
|
244
|
+
"foreground": "#C6DD88"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"name": "KeywordFunction",
|
|
248
|
+
"foreground": "#D88F56"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "MarkdownLinkName",
|
|
252
|
+
"foreground": "#BF616A"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"name": "MarkdownLinkUrl",
|
|
256
|
+
"foreground": "#B2885F"
|
|
241
257
|
}
|
|
242
258
|
]
|
|
243
259
|
}
|