rbs_activemodel 1.0.0 → 1.1.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/.rubocop.yml +4 -0
- data/lib/rbs_activemodel/active_model.rb +15 -5
- data/lib/rbs_activemodel/version.rb +1 -1
- data/rbs_collection.lock.yaml +8 -0
- data/sig/rbs_activemodel/active_model.rbs +4 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 565656a54eb217c822781ebc48e9eca1e40f5eb26e81aab55f6a08d5012e02b2
|
4
|
+
data.tar.gz: 6927a2e5adee0e5ab0c9eeceea67f04345b079aeea9d814e4715ca6dee0bb47f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7eeaf0d2a270734b1e68c31dd79dfba7c8ef68f4a92a9ca6f0e6060c561fce51531572c4f657d9fbd3ebffd14a278176c27bce02ea09af261cbdda622d7a382
|
7
|
+
data.tar.gz: d4dc4f96279447b913335927697ee0072fc5c725179b9064386c653e891502ee69c4d96f820df32ada677de98411e8b4bd084b4e963e96275e70c7fc722c0b5d
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "active_model"
|
4
|
+
require "active_record"
|
4
5
|
require "bigdecimal"
|
5
6
|
require "date"
|
6
7
|
require "rbs"
|
@@ -26,7 +27,7 @@ module RbsActivemodel
|
|
26
27
|
binary: String,
|
27
28
|
boolean: :bool,
|
28
29
|
date: Date,
|
29
|
-
datetime: DateTime,
|
30
|
+
datetime: "DateTime | ActiveSupport::TimeWithZone",
|
30
31
|
decimal: BigDecimal,
|
31
32
|
float: Float,
|
32
33
|
immutable_string: String,
|
@@ -41,7 +42,7 @@ module RbsActivemodel
|
|
41
42
|
end
|
42
43
|
|
43
44
|
def generate
|
44
|
-
return if mixins.empty?
|
45
|
+
return if mixins.empty? && attributes.empty?
|
45
46
|
|
46
47
|
format <<~RBS
|
47
48
|
#{header}
|
@@ -85,7 +86,9 @@ module RbsActivemodel
|
|
85
86
|
end
|
86
87
|
|
87
88
|
def mixins
|
88
|
-
|
89
|
+
return "" if klass < ActiveRecord::Base
|
90
|
+
|
91
|
+
@mixins ||= MIXINS.each_with_object([]) do |mod, mixins|
|
89
92
|
if klass < mod
|
90
93
|
mixins << "include ::#{mod.name}"
|
91
94
|
mixins << "extend ::#{mod.name}::ClassMethods" if mod.const_defined?(:ClassMethods)
|
@@ -98,9 +101,16 @@ module RbsActivemodel
|
|
98
101
|
|
99
102
|
# @type var model: untyped
|
100
103
|
model = klass
|
101
|
-
model.attribute_types.map do |name, type|
|
104
|
+
@attributes ||= model.attribute_types.map do |name, type|
|
102
105
|
type = TYPES.fetch(type.type, :untyped)
|
103
|
-
type_name =
|
106
|
+
type_name = case type
|
107
|
+
when Class
|
108
|
+
type.name
|
109
|
+
when String
|
110
|
+
"(#{type})"
|
111
|
+
else
|
112
|
+
type.to_s
|
113
|
+
end
|
104
114
|
suffix = "?" unless required_attribute?(name)
|
105
115
|
<<~RBS
|
106
116
|
def #{name}: () -> #{type_name}#{suffix}
|
data/rbs_collection.lock.yaml
CHANGED
@@ -25,6 +25,14 @@ gems:
|
|
25
25
|
revision: 3ff00fb82aa9e9fc72eb60a8172f664f25e7cbad
|
26
26
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
27
27
|
repo_dir: gems
|
28
|
+
- name: activerecord
|
29
|
+
version: '7.1'
|
30
|
+
source:
|
31
|
+
type: git
|
32
|
+
name: ruby/gem_rbs_collection
|
33
|
+
revision: 27212b1cd6c4d58b6a0d57f0b462b3bd8242636b
|
34
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
35
|
+
repo_dir: gems
|
28
36
|
- name: activesupport
|
29
37
|
version: '7.0'
|
30
38
|
source:
|
@@ -5,7 +5,10 @@ module RbsActivemodel
|
|
5
5
|
|
6
6
|
class Generator
|
7
7
|
MIXINS: Array[Module]
|
8
|
-
TYPES: Hash[Symbol,
|
8
|
+
TYPES: Hash[Symbol, Class | String | Symbol]
|
9
|
+
|
10
|
+
@mixins: String
|
11
|
+
@attributes: String
|
9
12
|
|
10
13
|
def initialize: (Class klass) -> void
|
11
14
|
def generate: () -> String?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbs_activemodel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.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: 2024-
|
11
|
+
date: 2024-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: railties
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sqlite3
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
description: A RBS files generator for activemodel gem
|
56
84
|
email:
|
57
85
|
- i.tkomiya@gmail.com
|