@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
- Whitespace: 2,
20
- None: 57,
21
- Unknown: 881,
22
+ LanguageConstant: 11,
22
23
  NewLine: 884,
23
- Comment: 885,
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.Whitespace]: 'Whitespace',
31
- [TokenType.None]: 'None',
32
- [TokenType.Unknown]: 'Unknown',
38
+ [TokenType.LanguageConstant]: 'LanguageConstant',
33
39
  [TokenType.NewLine]: 'NewLine',
34
- [TokenType.Comment]: 'Comment',
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\-]+\b/
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.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.3.0",
42
- "@lvce-editor/extension-host": "0.3.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.FileSystem: return import('../FileSystem/FileSystem.ipc.js')
7
- case ModuleId.Workspace: return import('../Workspace/Workspace.ipc.js')
8
- case ModuleId.Terminal: return import('../Terminal/Terminal.ipc.js')
9
- case ModuleId.Search: return import('../Search/Search.ipc.js')
10
- case ModuleId.SearchFile: return import('../SearchFile/SearchFile.ipc.js')
11
- case ModuleId.OutputChannel: return import('../OutputChannel/OutputChannel.ipc.js')
12
- case ModuleId.Developer: return import('../Developer/Developer.ipc.js')
13
- case ModuleId.ExtensionManagement: return import('../ExtensionManagement/ExtensionManagement.ipc.js')
14
- case ModuleId.ExtensionHost: return import('../ExtensionHost/ExtensionHost.ipc.js')
15
- case ModuleId.Preferences: return import('../Preferences/Preferences.ipc.js')
16
- case ModuleId.Native: return import('../Native/Native.ipc.js')
17
- case ModuleId.ClipBoard: return import('../ClipBoard/ClipBoard.ipc.js')
18
- case ModuleId.TextDocument: return import('../TextDocument/TextDocument.ipc.js')
19
- case ModuleId.WebSocketServer: return import('../WebSocketServer/WebSocketServer.ipc.js')
20
- case ModuleId.Platform: return import('../Platform/Platform.ipc.js')
21
- case ModuleId.RecentlyOpened: return import('../RecentlyOpened/RecentlyOpened.ipc.js')
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(`unknown module ${moduleId}`)
38
+ throw new Error(`module ${moduleId} not found`)
24
39
  }
25
40
  }