rbs2ts 1.1.0 → 1.2.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.
- checksums.yaml +4 -4
- data/README.md +22 -14
- data/lib/rbs2ts/converter.rb +1 -0
- data/lib/rbs2ts/converter/declarations.rb +50 -14
- data/lib/rbs2ts/converter/helper.rb +16 -0
- data/lib/rbs2ts/converter/types.rb +3 -11
- data/lib/rbs2ts/version.rb +1 -1
- data/rbs2ts.gemspec +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63451fb8675f6e0e4420d64d7655385f8b32260c0e17b0ec9f796312372140b3
|
4
|
+
data.tar.gz: cfa90fb4ec6d06efc412ec1f1f28a000d23c3f16cba28ad0aa5f4cea4d2bda43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8e8b4381ee67f4ad40a5a5cafa2590efe7f698b3f98bbc9625a0f74c975c4924cfd713a4450c67ba45bb346b3f620f2445707c27e09153eefe12ce60b21873a
|
7
|
+
data.tar.gz: 60832356723c81313fc06afa80a88d16555b815e3c94090db05392bee17f2de7bb30d8a5682cfdd04eaacbd4deeffdb4c1f6df5932b4bb21e5bee357aefdad9e
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Rbs2ts
|
2
2
|
|
3
|
-
|
3
|
+
A RubyGem that converts Ruby RBS to TypeScript definitions.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -88,6 +88,14 @@ class Klass
|
|
88
88
|
**String rest_keywords
|
89
89
|
) -> [{ s: String, f: Float }?]
|
90
90
|
end
|
91
|
+
|
92
|
+
module Module
|
93
|
+
def func: (String, Integer) -> { str: String, int: Integer }
|
94
|
+
end
|
95
|
+
|
96
|
+
interface _Interface
|
97
|
+
def func: (String, Integer) -> { str: String, int: Integer }
|
98
|
+
end
|
91
99
|
```
|
92
100
|
|
93
101
|
to TypeScript
|
@@ -169,18 +177,18 @@ export declare class Klass {
|
|
169
177
|
f: number;
|
170
178
|
} | null | undefined)];
|
171
179
|
};
|
172
|
-
```
|
173
|
-
|
174
|
-
---
|
175
180
|
|
176
|
-
|
181
|
+
export namespace Module {
|
182
|
+
export declare function func(arg1: string, arg2: number): {
|
183
|
+
str: string;
|
184
|
+
int: number;
|
185
|
+
};
|
186
|
+
};
|
177
187
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
- [ ] Module declaration
|
186
|
-
- [ ] Interface declaration
|
188
|
+
export interface Interface {
|
189
|
+
func(arg1: string, arg2: number): {
|
190
|
+
str: string;
|
191
|
+
int: number;
|
192
|
+
};
|
193
|
+
};
|
194
|
+
```
|
data/lib/rbs2ts/converter.rb
CHANGED
@@ -11,6 +11,10 @@ module Rbs2ts
|
|
11
11
|
case d
|
12
12
|
when ::RBS::AST::Declarations::Class then
|
13
13
|
Converter::Declarations::Class.new(d).to_ts
|
14
|
+
when ::RBS::AST::Declarations::Module then
|
15
|
+
Converter::Declarations::Module.new(d).to_ts
|
16
|
+
when ::RBS::AST::Declarations::Interface then
|
17
|
+
Converter::Declarations::Interface.new(d).to_ts
|
14
18
|
when ::RBS::AST::Declarations::Alias then
|
15
19
|
Converter::Declarations::Alias.new(d).to_ts
|
16
20
|
end
|
@@ -38,27 +42,16 @@ module Rbs2ts
|
|
38
42
|
|
39
43
|
attr_reader :declaration
|
40
44
|
end
|
41
|
-
|
42
|
-
class Class < Base
|
43
|
-
INDENT = ' '
|
44
|
-
@@nest = 0
|
45
45
|
|
46
|
+
class Class < Base
|
46
47
|
def to_ts
|
47
|
-
@@nest = @@nest + 1
|
48
|
-
|
49
48
|
members_ts = declaration.members.map {|member|
|
50
|
-
|
51
|
-
ts
|
52
|
-
.split("\n")
|
53
|
-
.map {|t| "#{INDENT * @@nest}#{t}" }
|
54
|
-
.join("\n")
|
49
|
+
member_to_ts(member)
|
55
50
|
}.reject(&:empty?).join("\n")
|
56
51
|
|
57
|
-
@@nest = @@nest - 1
|
58
|
-
|
59
52
|
<<~TS
|
60
53
|
export declare class #{name} {
|
61
|
-
#{members_ts}
|
54
|
+
#{Helper.indent(members_ts)}
|
62
55
|
};
|
63
56
|
TS
|
64
57
|
.chomp
|
@@ -81,9 +74,52 @@ module Rbs2ts
|
|
81
74
|
end
|
82
75
|
|
83
76
|
class Module < Base
|
77
|
+
def to_ts
|
78
|
+
members_ts = declaration.members.map {|member|
|
79
|
+
member_to_ts(member)
|
80
|
+
}.reject(&:empty?).join("\n")
|
81
|
+
|
82
|
+
<<~TS
|
83
|
+
export namespace #{name} {
|
84
|
+
#{Helper.indent(members_ts)}
|
85
|
+
};
|
86
|
+
TS
|
87
|
+
.chomp
|
88
|
+
end
|
89
|
+
|
90
|
+
def member_to_ts(member)
|
91
|
+
case member
|
92
|
+
when ::RBS::AST::Members::MethodDefinition
|
93
|
+
ts = Converter::Members::MethodDefinition.new(member).to_ts
|
94
|
+
"export declare function #{ts}"
|
95
|
+
else
|
96
|
+
''
|
97
|
+
end
|
98
|
+
end
|
84
99
|
end
|
85
100
|
|
86
101
|
class Interface < Base
|
102
|
+
def to_ts
|
103
|
+
members_ts = declaration.members.map {|member|
|
104
|
+
member_to_ts(member)
|
105
|
+
}.reject(&:empty?).join("\n")
|
106
|
+
|
107
|
+
<<~TS
|
108
|
+
export interface #{name.gsub(/_/, '')} {
|
109
|
+
#{Helper.indent(members_ts)}
|
110
|
+
};
|
111
|
+
TS
|
112
|
+
.chomp
|
113
|
+
end
|
114
|
+
|
115
|
+
def member_to_ts(member)
|
116
|
+
case member
|
117
|
+
when ::RBS::AST::Members::MethodDefinition
|
118
|
+
Converter::Members::MethodDefinition.new(member).to_ts
|
119
|
+
else
|
120
|
+
''
|
121
|
+
end
|
122
|
+
end
|
87
123
|
end
|
88
124
|
|
89
125
|
class Alias < Base
|
@@ -46,27 +46,19 @@ module Rbs2ts
|
|
46
46
|
end
|
47
47
|
|
48
48
|
class Record < ConverterBase
|
49
|
-
INDENT = ' '
|
50
|
-
@@nest = 0
|
51
|
-
|
52
49
|
def to_ts
|
53
|
-
@@nest = @@nest + 1
|
54
|
-
|
55
|
-
indent = INDENT * @@nest
|
56
50
|
field_lines = type.fields.map { |name, type|
|
57
|
-
"#{
|
51
|
+
"#{CaseTransform.camel_lower(name.to_s)}: #{Types::Resolver.to_ts(type)};"
|
58
52
|
}
|
59
53
|
|
60
|
-
@@nest = @@nest - 1
|
61
|
-
|
62
54
|
return '{}' if field_lines.empty?
|
63
55
|
|
64
56
|
field_ts = field_lines.join("\n")
|
65
57
|
|
66
58
|
ts = <<~CODE
|
67
59
|
{
|
68
|
-
#{field_ts}
|
69
|
-
|
60
|
+
#{Helper.indent(field_ts)}
|
61
|
+
}
|
70
62
|
CODE
|
71
63
|
|
72
64
|
ts.chomp
|
data/lib/rbs2ts/version.rb
CHANGED
data/rbs2ts.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["mugi-uno"]
|
10
10
|
spec.email = ["mugi.uno@gmail.com"]
|
11
11
|
|
12
|
-
spec.summary = "
|
12
|
+
spec.summary = "A RubyGem that converts Ruby RBS to TypeScript definitions."
|
13
13
|
spec.homepage = "https://github.com/mugi-uno/rbs2ts"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbs2ts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mugi-uno
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbs
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- lib/rbs2ts/cli.rb
|
119
119
|
- lib/rbs2ts/converter.rb
|
120
120
|
- lib/rbs2ts/converter/declarations.rb
|
121
|
+
- lib/rbs2ts/converter/helper.rb
|
121
122
|
- lib/rbs2ts/converter/members.rb
|
122
123
|
- lib/rbs2ts/converter/types.rb
|
123
124
|
- lib/rbs2ts/version.rb
|
@@ -144,5 +145,5 @@ requirements: []
|
|
144
145
|
rubygems_version: 3.1.4
|
145
146
|
signing_key:
|
146
147
|
specification_version: 4
|
147
|
-
summary:
|
148
|
+
summary: A RubyGem that converts Ruby RBS to TypeScript definitions.
|
148
149
|
test_files: []
|