@lvce-editor/shared-process 0.3.0 → 0.4.0
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.
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
export const State = {
|
|
5
5
|
TopLevelContent: 1,
|
|
6
6
|
InsideLineComment: 2,
|
|
7
|
+
AfterPropertyName: 3,
|
|
8
|
+
AfterPropertyNameAfterColon: 4,
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
export const StateMap = {
|
|
@@ -15,33 +17,42 @@ export const StateMap = {
|
|
|
15
17
|
* @enum number
|
|
16
18
|
*/
|
|
17
19
|
export const TokenType = {
|
|
20
|
+
Comment: 885,
|
|
18
21
|
CssSelector: 1,
|
|
19
|
-
|
|
20
|
-
None: 57,
|
|
21
|
-
Unknown: 881,
|
|
22
|
+
LanguageConstant: 11,
|
|
22
23
|
NewLine: 884,
|
|
23
|
-
|
|
24
|
+
None: 57,
|
|
25
|
+
Numeric: 15,
|
|
26
|
+
PropertyName: 12,
|
|
27
|
+
PropertyValueString: 14,
|
|
28
|
+
Punctuation: 13,
|
|
24
29
|
Query: 886,
|
|
25
30
|
Text: 887,
|
|
31
|
+
Unknown: 881,
|
|
32
|
+
Whitespace: 2,
|
|
26
33
|
}
|
|
27
34
|
|
|
28
35
|
export const TokenMap = {
|
|
36
|
+
[TokenType.Comment]: 'Comment',
|
|
29
37
|
[TokenType.CssSelector]: 'CssSelector',
|
|
30
|
-
[TokenType.
|
|
31
|
-
[TokenType.None]: 'None',
|
|
32
|
-
[TokenType.Unknown]: 'Unknown',
|
|
38
|
+
[TokenType.LanguageConstant]: 'LanguageConstant',
|
|
33
39
|
[TokenType.NewLine]: 'NewLine',
|
|
34
|
-
[TokenType.
|
|
40
|
+
[TokenType.None]: 'None',
|
|
41
|
+
[TokenType.Numeric]: 'Numeric',
|
|
42
|
+
[TokenType.PropertyName]: 'JsonPropertyName',
|
|
35
43
|
[TokenType.Query]: 'Query',
|
|
36
44
|
[TokenType.Text]: 'Text',
|
|
45
|
+
[TokenType.Unknown]: 'Unknown',
|
|
46
|
+
[TokenType.Whitespace]: 'Whitespace',
|
|
47
|
+
[TokenType.Punctuation]: 'Punctuation',
|
|
48
|
+
[TokenType.PropertyValueString]: 'PropertyValueString',
|
|
37
49
|
}
|
|
38
50
|
|
|
39
51
|
const RE_LINE_COMMENT_START = /^#/
|
|
40
52
|
const RE_WHITESPACE = /^ +/
|
|
41
53
|
const RE_CURLY_OPEN = /^\{/
|
|
42
54
|
const RE_CURLY_CLOSE = /^\}/
|
|
43
|
-
const RE_PROPERTY_NAME = /^[a-zA-Z\-]
|
|
44
|
-
const RE_COLON = /^:/
|
|
55
|
+
const RE_PROPERTY_NAME = /^[a-zA-Z\-]+(?=\s*:)/
|
|
45
56
|
const RE_PROPERTY_VALUE = /^[^;\}]+/
|
|
46
57
|
const RE_SEMICOLON = /^;/
|
|
47
58
|
const RE_COMMA = /^,/
|
|
@@ -62,6 +73,8 @@ const RE_STAR = /^\*/
|
|
|
62
73
|
const RE_QUERY_NAME = /^[a-z\-]+/
|
|
63
74
|
const RE_QUERY_CONTENT = /^[^\)]+/
|
|
64
75
|
const RE_COMBINATOR = /^[\+\>\~]/
|
|
76
|
+
const RE_LANGUAGE_CONSTANT = /^(?:true|false)/
|
|
77
|
+
const RE_COLON = /^:/
|
|
65
78
|
|
|
66
79
|
export const initialLineState = {
|
|
67
80
|
state: State.TopLevelContent,
|
|
@@ -89,6 +102,15 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
89
102
|
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
90
103
|
token = TokenType.Whitespace
|
|
91
104
|
state = State.TopLevelContent
|
|
105
|
+
} else if ((next = part.match(RE_LANGUAGE_CONSTANT))) {
|
|
106
|
+
token = TokenType.LanguageConstant
|
|
107
|
+
state = State.TopLevelContent
|
|
108
|
+
} else if ((next = part.match(RE_PROPERTY_NAME))) {
|
|
109
|
+
token = TokenType.PropertyName
|
|
110
|
+
state = State.AfterPropertyName
|
|
111
|
+
} else if ((next = part.match(RE_NUMERIC))) {
|
|
112
|
+
token = TokenType.Numeric
|
|
113
|
+
state = State.TopLevelContent
|
|
92
114
|
} else if ((next = part.match(RE_ANYTHING))) {
|
|
93
115
|
token = TokenType.Text
|
|
94
116
|
state = State.TopLevelContent
|
|
@@ -105,6 +127,34 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
105
127
|
throw new Error('no')
|
|
106
128
|
}
|
|
107
129
|
break
|
|
130
|
+
case State.AfterPropertyName:
|
|
131
|
+
if ((next = part.match(RE_COLON))) {
|
|
132
|
+
token = TokenType.Punctuation
|
|
133
|
+
state = State.AfterPropertyNameAfterColon
|
|
134
|
+
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
135
|
+
token = TokenType.Whitespace
|
|
136
|
+
state = State.AfterPropertyName
|
|
137
|
+
} else {
|
|
138
|
+
throw new Error('no')
|
|
139
|
+
}
|
|
140
|
+
break
|
|
141
|
+
case State.AfterPropertyNameAfterColon:
|
|
142
|
+
if ((next = part.match(RE_WHITESPACE))) {
|
|
143
|
+
token = TokenType.Whitespace
|
|
144
|
+
state = State.AfterPropertyNameAfterColon
|
|
145
|
+
} else if ((next = part.match(RE_LANGUAGE_CONSTANT))) {
|
|
146
|
+
token = TokenType.LanguageConstant
|
|
147
|
+
state = State.TopLevelContent
|
|
148
|
+
} else if ((next = part.match(RE_NUMERIC))) {
|
|
149
|
+
token = TokenType.Numeric
|
|
150
|
+
state = State.TopLevelContent
|
|
151
|
+
} else if ((next = part.match(RE_ANYTHING))) {
|
|
152
|
+
token = TokenType.PropertyValueString
|
|
153
|
+
state = State.TopLevelContent
|
|
154
|
+
} else {
|
|
155
|
+
throw new Error('no')
|
|
156
|
+
}
|
|
157
|
+
break
|
|
108
158
|
default:
|
|
109
159
|
console.log({ state, line })
|
|
110
160
|
throw new Error('no')
|
|
@@ -120,3 +170,5 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
120
170
|
tokens,
|
|
121
171
|
}
|
|
122
172
|
}
|
|
173
|
+
|
|
174
|
+
tokenizeLine(`x: 11`, initialLineState) //?
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/shared-process",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"verror": "^1.10.1",
|
|
39
39
|
"ws": "^8.8.1",
|
|
40
40
|
"xdg-basedir": "^5.1.0",
|
|
41
|
-
"@lvce-editor/pty-host": "0.
|
|
42
|
-
"@lvce-editor/extension-host": "0.
|
|
41
|
+
"@lvce-editor/pty-host": "0.4.0",
|
|
42
|
+
"@lvce-editor/extension-host": "0.4.0"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
45
|
"electron-clipboard-ex": "^1.3.3",
|
|
@@ -1,25 +1,40 @@
|
|
|
1
1
|
import * as ModuleId from '../ModuleId/ModuleId.js'
|
|
2
2
|
|
|
3
|
-
// prettier-ignore
|
|
4
3
|
export const load = (moduleId) => {
|
|
5
4
|
switch (moduleId) {
|
|
6
|
-
case ModuleId.
|
|
7
|
-
|
|
8
|
-
case ModuleId.
|
|
9
|
-
|
|
10
|
-
case ModuleId.
|
|
11
|
-
|
|
12
|
-
case ModuleId.
|
|
13
|
-
|
|
14
|
-
case ModuleId.
|
|
15
|
-
|
|
16
|
-
case ModuleId.Native:
|
|
17
|
-
|
|
18
|
-
case ModuleId.
|
|
19
|
-
|
|
20
|
-
case ModuleId.Platform:
|
|
21
|
-
|
|
5
|
+
case ModuleId.ClipBoard:
|
|
6
|
+
return import('../ClipBoard/ClipBoard.ipc.js')
|
|
7
|
+
case ModuleId.Developer:
|
|
8
|
+
return import('../Developer/Developer.ipc.js')
|
|
9
|
+
case ModuleId.ExtensionHost:
|
|
10
|
+
return import('../ExtensionHost/ExtensionHost.ipc.js')
|
|
11
|
+
case ModuleId.ExtensionManagement:
|
|
12
|
+
return import('../ExtensionManagement/ExtensionManagement.ipc.js')
|
|
13
|
+
case ModuleId.FileSystem:
|
|
14
|
+
return import('../FileSystem/FileSystem.ipc.js')
|
|
15
|
+
case ModuleId.Native:
|
|
16
|
+
return import('../Native/Native.ipc.js')
|
|
17
|
+
case ModuleId.OutputChannel:
|
|
18
|
+
return import('../OutputChannel/OutputChannel.ipc.js')
|
|
19
|
+
case ModuleId.Platform:
|
|
20
|
+
return import('../Platform/Platform.ipc.js')
|
|
21
|
+
case ModuleId.Preferences:
|
|
22
|
+
return import('../Preferences/Preferences.ipc.js')
|
|
23
|
+
case ModuleId.RecentlyOpened:
|
|
24
|
+
return import('../RecentlyOpened/RecentlyOpened.ipc.js')
|
|
25
|
+
case ModuleId.Search:
|
|
26
|
+
return import('../Search/Search.ipc.js')
|
|
27
|
+
case ModuleId.SearchFile:
|
|
28
|
+
return import('../SearchFile/SearchFile.ipc.js')
|
|
29
|
+
case ModuleId.Terminal:
|
|
30
|
+
return import('../Terminal/Terminal.ipc.js')
|
|
31
|
+
case ModuleId.TextDocument:
|
|
32
|
+
return import('../TextDocument/TextDocument.ipc.js')
|
|
33
|
+
case ModuleId.WebSocketServer:
|
|
34
|
+
return import('../WebSocketServer/WebSocketServer.ipc.js')
|
|
35
|
+
case ModuleId.Workspace:
|
|
36
|
+
return import('../Workspace/Workspace.ipc.js')
|
|
22
37
|
default:
|
|
23
|
-
throw new Error(`
|
|
38
|
+
throw new Error(`module ${moduleId} not found`)
|
|
24
39
|
}
|
|
25
40
|
}
|