rbs_activerecord 1.2.0 → 1.2.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.
- checksums.yaml +4 -4
- data/lib/rbs_activerecord/generator.rb +4 -6
- data/lib/rbs_activerecord/utils.rb +13 -0
- data/lib/rbs_activerecord/version.rb +1 -1
- data/sig/rbs_activerecord/utils.rbs +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a901f8b1ee98a3837e7ee4182ffb3d247466793f367ac6b764487271f2088445
|
4
|
+
data.tar.gz: 749b7ec1f3dc34235087df037f7f94418e09729cff3229717e1620a08d6abbaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c5e46b70af5fb36fbfacf1beea9f949ad18b31a78ca13bfe37578f0fb8d4c5c88738bbc9039f09adde10ce49dc7f43a49d60664ac9130f4614178a8781259bf
|
7
|
+
data.tar.gz: 16cdca38fc3d9d72ba97ab9c076996aea8c58864bdcb41476a0bf8d9f86123a1042fe305a4e3ff77022ad86febeba50c6d7c632fc2bf8f3512af8b9cd58c4858
|
@@ -104,18 +104,16 @@ module RbsActiverecord
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def header #: String
|
107
|
-
|
108
|
-
|
109
|
-
namespace += "::#{mod_name}"
|
110
|
-
mod_object = Object.const_get(namespace)
|
107
|
+
klass_to_names(klass).map do |name|
|
108
|
+
mod_object = Object.const_get(name.to_s)
|
111
109
|
case mod_object
|
112
110
|
when Class
|
113
111
|
superclass = mod_object.superclass
|
114
112
|
superclass_name = superclass&.name || "::Object"
|
115
113
|
|
116
|
-
"class #{
|
114
|
+
"class #{name} < ::#{superclass_name}"
|
117
115
|
when Module
|
118
|
-
"module #{
|
116
|
+
"module #{name}"
|
119
117
|
else
|
120
118
|
raise "unreachable"
|
121
119
|
end
|
@@ -12,6 +12,19 @@ module RbsActiverecord
|
|
12
12
|
end.string
|
13
13
|
end
|
14
14
|
|
15
|
+
# @rbs klass_name: singleton(Object)
|
16
|
+
def klass_to_names(klass) #: Array[RBS::TypeName]
|
17
|
+
type_name = RBS::TypeName.parse("::#{klass.name}")
|
18
|
+
|
19
|
+
names = [type_name] #: Array[RBS::TypeName]
|
20
|
+
namespace = type_name.namespace
|
21
|
+
until namespace.empty?
|
22
|
+
names << namespace.to_type_name
|
23
|
+
namespace = namespace.parent
|
24
|
+
end
|
25
|
+
names.reverse
|
26
|
+
end
|
27
|
+
|
15
28
|
# @rbs klass: singleton(ActiveRecord::Base)
|
16
29
|
def primary_key_type_for(klass) #: String # rubocop:disable Metrics/AbcSize
|
17
30
|
case klass.primary_key
|
@@ -5,6 +5,9 @@ module RbsActiverecord
|
|
5
5
|
# @rbs str: String
|
6
6
|
def format: (String str) -> String
|
7
7
|
|
8
|
+
# @rbs klass_name: singleton(Object)
|
9
|
+
def klass_to_names: (untyped klass) -> Array[RBS::TypeName]
|
10
|
+
|
8
11
|
# @rbs klass: singleton(ActiveRecord::Base)
|
9
12
|
def primary_key_type_for: (singleton(ActiveRecord::Base) klass) -> String
|
10
13
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbs_activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takeshi KOMIYA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-03-
|
11
|
+
date: 2025-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|