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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ade04cb067767d6453e1eca795b184333487ea6a95a1da803e3728d9383942d7
4
- data.tar.gz: 5f4311680e25d88fee12db6dfdda91e970bdfd1cccf78a66425090f79a2be589
3
+ metadata.gz: 565656a54eb217c822781ebc48e9eca1e40f5eb26e81aab55f6a08d5012e02b2
4
+ data.tar.gz: 6927a2e5adee0e5ab0c9eeceea67f04345b079aeea9d814e4715ca6dee0bb47f
5
5
  SHA512:
6
- metadata.gz: 277ba332f36746bee77ca64194efe2de9d72247e114d13e1d5f64e2acf130393156ee25c487eeac988253e26a0a8d338364b970827bbbb1edbb43e2febc8786b
7
- data.tar.gz: af377a42d1a5cc85c070d1da916bb9bbd2a68cb2f1879063d4c18adc2dfbc3413b22c1d61981c274275a00fa4b7d54b09a2c95003cbbd821dec3bc24a3b6d073
6
+ metadata.gz: d7eeaf0d2a270734b1e68c31dd79dfba7c8ef68f4a92a9ca6f0e6060c561fce51531572c4f657d9fbd3ebffd14a278176c27bce02ea09af261cbdda622d7a382
7
+ data.tar.gz: d4dc4f96279447b913335927697ee0072fc5c725179b9064386c653e891502ee69c4d96f820df32ada677de98411e8b4bd084b4e963e96275e70c7fc722c0b5d
data/.rubocop.yml CHANGED
@@ -3,8 +3,12 @@ AllCops:
3
3
 
4
4
  Metrics/BlockLength:
5
5
  Exclude:
6
+ - 'rbs_activemodel.gemspec'
6
7
  - 'spec/**/*.rb'
7
8
 
9
+ Metrics/CyclomaticComplexity:
10
+ Max: 10
11
+
8
12
  Metrics/MethodLength:
9
13
  Max: 20
10
14
 
@@ -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
- MIXINS.each_with_object([]) do |mod, mixins|
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 = type.is_a?(Class) ? type.name : type.to_s
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}
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RbsActivemodel
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.1"
5
5
  end
@@ -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, untyped]
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.0.0
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-08-21 00:00:00.000000000 Z
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