File tree Expand file tree Collapse file tree 8 files changed +1214
-360
lines changed Expand file tree Collapse file tree 8 files changed +1214
-360
lines changed Original file line number Diff line number Diff line change 8
8
from .enums import generate_enums
9
9
from .notifications import generate_notifications
10
10
from .or_types import generate_or_types
11
+ from .registry import generate_registry
11
12
from .requests import generate_requests
12
13
from .structs import generate_structs
13
14
from .tests import generate_tests
@@ -40,6 +41,7 @@ def generate_from_spec(
40
41
+ or_types ,
41
42
),
42
43
"types_test.go" : generate_tests (spec ),
44
+ "registry.go" : generate_registry (spec ),
43
45
}
44
46
output_path = pathlib .Path (output_dir )
45
47
test_path = pathlib .Path (test_dir )
Original file line number Diff line number Diff line change @@ -46,9 +46,9 @@ def generate_notifications(
46
46
f'\t Params { param_type } `json:"params"`' ,
47
47
]
48
48
struct .append ("}" )
49
- struct .append (f"func (t * { notification .typeName } ) isMessage() {{}}" )
49
+ struct .append (f"func (t { notification .typeName } ) isMessage() {{}}" )
50
50
struct .append (
51
- f"func (t * { notification .typeName } ) isNotification() {{}}"
51
+ f"func (t { notification .typeName } ) isNotification() {{}}" ,
52
52
)
53
53
struct += [
54
54
f"func (t *{ notification .typeName } ) UnmarshalJSON(x []byte) error {{" ,
Original file line number Diff line number Diff line change
1
+ from generator import model
2
+
3
+ from .utils import join
4
+
5
+
6
+ def generate_registry (spec : model .LSPModel ) -> str :
7
+ result = [
8
+ "package protocol" ,
9
+ "import (" ,
10
+ ' "encoding/json"' ,
11
+ ")" ,
12
+ "var MessageRegistry = map[string]func([]byte) (Message, error) {" ,
13
+ ]
14
+
15
+ result .extend (
16
+ [
17
+ join (
18
+ [
19
+ f' "{ request .method } ": func(data []byte) (Message, error) {{' ,
20
+ f" var message { request .typeName } " ,
21
+ " if err := json.Unmarshal(data, &message); err != nil {" ,
22
+ " return nil, err" ,
23
+ " }" ,
24
+ " return message, nil" ,
25
+ " }," ,
26
+ ],
27
+ )
28
+ for request in spec .requests
29
+ ],
30
+ )
31
+ result .extend (
32
+ [
33
+ join (
34
+ [
35
+ f' "{ notification .method } ": func(data []byte) (Message, error) {{' ,
36
+ f" var message { notification .typeName } " ,
37
+ " if err := json.Unmarshal(data, &message); err != nil {" ,
38
+ " return nil, err" ,
39
+ " }" ,
40
+ " return message, nil" ,
41
+ " }," ,
42
+ ],
43
+ )
44
+ for notification in spec .notifications
45
+ ],
46
+ )
47
+ result .append ("}" )
48
+
49
+ return join (result )
Original file line number Diff line number Diff line change @@ -50,8 +50,8 @@ def generate_requests(
50
50
]
51
51
52
52
struct .append ("}" )
53
- struct .append (f"func (t * { request .typeName } ) isMessage() {{}}" )
54
- struct .append (f"func (t * { request .typeName } ) isRequest() {{}}" )
53
+ struct .append (f"func (t { request .typeName } ) isMessage() {{}}" )
54
+ struct .append (f"func (t { request .typeName } ) isRequest() {{}}" )
55
55
struct += [
56
56
f"func (t *{ request .typeName } ) UnmarshalJSON(x []byte) error {{" ,
57
57
" var m map[string]any" ,
@@ -119,7 +119,7 @@ def generate_requests(
119
119
" return nil" ,
120
120
"}" ,
121
121
]
122
- struct .append (f"func (t * { response_name } ) isMessage() {{}}" )
123
- struct .append (f"func (t * { response_name } ) isResponse() {{}}" )
122
+ struct .append (f"func (t { response_name } ) isMessage() {{}}" )
123
+ struct .append (f"func (t { response_name } ) isResponse() {{}}" )
124
124
result .append (join (struct ))
125
125
return result
You can’t perform that action at this time.
0 commit comments