orthoses-rails 1.7.0 → 1.8.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/lib/orthoses/active_record/belongs_to.rb +1 -1
- data/lib/orthoses/active_record/enum.rb +17 -11
- data/lib/orthoses/active_record/relation.rb +8 -5
- data/lib/orthoses/active_support/concern.rb +1 -1
- data/lib/orthoses/active_support/delegation.rb +1 -1
- data/lib/orthoses/active_support/time_with_zone.rb +6 -6
- data/lib/orthoses/rails/version.rb +1 -1
- data/lib/orthoses/rails.rb +1 -0
- data/lib/orthoses/shims.rb +18 -0
- metadata +4 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1b4970c303a0f5df274a367939d30c03d7e7734d58845325423aae75e53827bf
|
|
4
|
+
data.tar.gz: ca40d8c7996291b6dbcf0db78ae817ec7ef1eb8f5a6eef8a4ab0b9cb07b14ddb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 04fa7b44b4dd3f3649e19859cc03ece90758517631dae4f054adcd81bc7935414b0551311a9c6b906e6ab9db1deaca1014f760d858b0c4e58e8f410197ff5b89
|
|
7
|
+
data.tar.gz: 715ad56b1ff3c8699c4cb0abbd789483087afc50f5c1585b8ecc3a06691e79e7566c2d87ee26d5c145524cb99fdc7f54e58757117f47caa3fea5bf3b648e2ea9
|
|
@@ -7,8 +7,9 @@ module Orthoses
|
|
|
7
7
|
# >= 7.0
|
|
8
8
|
# def enum(name = nil, values = nil, **options)
|
|
9
9
|
class Enum
|
|
10
|
-
def initialize(loader)
|
|
10
|
+
def initialize(loader, strict_limit: 8)
|
|
11
11
|
@loader = loader
|
|
12
|
+
@strict_limit = strict_limit
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
def call
|
|
@@ -84,18 +85,23 @@ module Orthoses
|
|
|
84
85
|
end
|
|
85
86
|
|
|
86
87
|
# Expressing type casting.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
overloads = [] #: Array[String]
|
|
89
|
+
if pairs.length <= @strict_limit
|
|
90
|
+
if pairs.keys.any? { |key| key.match?(/[^a-zA-Z_]/) }
|
|
91
|
+
overloads << "(Symbol) -> void"
|
|
92
|
+
else
|
|
93
|
+
overloads << "(#{pairs.keys.map{|key|key.to_sym.inspect}.join(" | ")}) -> void"
|
|
94
|
+
end
|
|
95
|
+
overloads << "(#{pairs.keys.map{|key|key.to_s.inspect}.join(" | ")}) -> void"
|
|
96
|
+
overloads << "(#{pairs.values.map(&:inspect).join(" | ")}) -> void"
|
|
97
|
+
store[base_name] << "def #{name}: () -> (#{pairs.keys.map { |k| "\"#{k}\"" }.join(" | ")})"
|
|
98
|
+
store[base_name] << "def #{name}=: #{overloads.join(" | ")}"
|
|
90
99
|
else
|
|
91
|
-
"(
|
|
100
|
+
overloads << "(Symbol | String) -> void"
|
|
101
|
+
overloads << "(#{pairs.values.map { |v| Orthoses::Utils.object_to_rbs(v) }.uniq.join(" | ")}) -> void"
|
|
102
|
+
store[base_name] << "def #{name}: () -> String"
|
|
103
|
+
store[base_name] << "def #{name}=: #{overloads.join(" | ")}"
|
|
92
104
|
end
|
|
93
|
-
overloads = [
|
|
94
|
-
symbol_pattern,
|
|
95
|
-
"(#{pairs.keys.map{|key|key.to_s.inspect}.join(" | ")}) -> void",
|
|
96
|
-
"(#{pairs.values.map(&:inspect).join(" | ")}) -> void",
|
|
97
|
-
]
|
|
98
|
-
store[base_name] << "def #{name}=: #{overloads.join(" | ")}"
|
|
99
105
|
end
|
|
100
106
|
end
|
|
101
107
|
end
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
module Orthoses
|
|
4
4
|
module ActiveRecord
|
|
5
5
|
class Relation
|
|
6
|
-
def initialize(loader)
|
|
6
|
+
def initialize(loader, strict: false)
|
|
7
7
|
@loader = loader
|
|
8
|
+
@strict = strict
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def call
|
|
@@ -24,10 +25,12 @@ module Orthoses
|
|
|
24
25
|
klass.singleton_methods(false).each do |singleton_method|
|
|
25
26
|
c << "def #{singleton_method}: (*untyped, **untyped) -> untyped"
|
|
26
27
|
end
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
if @strict
|
|
29
|
+
(klass.singleton_class.included_modules - ::ActiveRecord::Relation.included_modules).each do |mod|
|
|
30
|
+
mname = Utils.module_name(mod) or next
|
|
31
|
+
store[mname].header = "module #{mname}"
|
|
32
|
+
c << "include #{mname}"
|
|
33
|
+
end
|
|
31
34
|
end
|
|
32
35
|
end
|
|
33
36
|
|
|
@@ -36,7 +36,7 @@ module Orthoses
|
|
|
36
36
|
def members_prototype_of(mod_name)
|
|
37
37
|
mod = Object.const_get(mod_name)
|
|
38
38
|
runtime = ::RBS::Prototype::Runtime.new(patterns: nil, env: nil, merge: false)
|
|
39
|
-
type_name = TypeName(mod_name)
|
|
39
|
+
type_name = ::RBS::TypeName.parse(mod_name)
|
|
40
40
|
[].tap do |members|
|
|
41
41
|
runtime.generate_methods(mod, type_name, members)
|
|
42
42
|
end
|
|
@@ -80,7 +80,7 @@ module Orthoses
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def find(mod_name, name, kind, argument)
|
|
83
|
-
typename = TypeName(mod_name).absolute!
|
|
83
|
+
typename = ::RBS::TypeName.parse(mod_name).absolute!
|
|
84
84
|
|
|
85
85
|
if definition_method = build_definition(typename, kind)&.methods&.[](name)
|
|
86
86
|
# found in env
|
|
@@ -29,10 +29,10 @@ module Orthoses
|
|
|
29
29
|
])
|
|
30
30
|
|
|
31
31
|
TIME_MODULES = Set.new([
|
|
32
|
-
TypeName("::Time"),
|
|
33
|
-
TypeName("::DateAndTime::Zones"),
|
|
34
|
-
TypeName("::DateAndTime::Calculations"),
|
|
35
|
-
TypeName("::DateAndTime::Compatibility")
|
|
32
|
+
::RBS::TypeName.parse("::Time"),
|
|
33
|
+
::RBS::TypeName.parse("::DateAndTime::Zones"),
|
|
34
|
+
::RBS::TypeName.parse("::DateAndTime::Calculations"),
|
|
35
|
+
::RBS::TypeName.parse("::DateAndTime::Compatibility")
|
|
36
36
|
])
|
|
37
37
|
|
|
38
38
|
NONEED_METHODS = Set.new(%i[
|
|
@@ -65,8 +65,8 @@ module Orthoses
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
def each_line_from_core_time_definition(store)
|
|
68
|
-
type_name_time = TypeName("::Time")
|
|
69
|
-
type_name_time_with_zone = TypeName("::ActiveSupport::TimeWithZone")
|
|
68
|
+
type_name_time = ::RBS::TypeName.parse("::Time")
|
|
69
|
+
type_name_time_with_zone = ::RBS::TypeName.parse("::ActiveSupport::TimeWithZone")
|
|
70
70
|
env = Utils.rbs_environment(collection: true, cache: false)
|
|
71
71
|
|
|
72
72
|
add_signature(env, store["Time"])
|
data/lib/orthoses/rails.rb
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# RBS 3.8
|
|
2
|
+
unless RBS::TypeName.singleton_class.method_defined?(:parse)
|
|
3
|
+
module RBS
|
|
4
|
+
class TypeName
|
|
5
|
+
def self.parse(string)
|
|
6
|
+
absolute = string.start_with?("::")
|
|
7
|
+
|
|
8
|
+
*path, name = string.delete_prefix("::").split("::").map(&:to_sym)
|
|
9
|
+
raise unless name
|
|
10
|
+
|
|
11
|
+
TypeName.new(
|
|
12
|
+
name: name,
|
|
13
|
+
namespace: RBS::Namespace.new(path: path, absolute: absolute)
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: orthoses-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ksss
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-02-04 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: orthoses
|
|
@@ -69,6 +68,7 @@ files:
|
|
|
69
68
|
- lib/orthoses/rails/version.rb
|
|
70
69
|
- lib/orthoses/railties.rb
|
|
71
70
|
- lib/orthoses/railties/mixin.rb
|
|
71
|
+
- lib/orthoses/shims.rb
|
|
72
72
|
- sig/orthoses/rails.rbs
|
|
73
73
|
homepage: https://github.com/ksss/orthoses-rails
|
|
74
74
|
licenses:
|
|
@@ -77,7 +77,6 @@ metadata:
|
|
|
77
77
|
homepage_uri: https://github.com/ksss/orthoses-rails
|
|
78
78
|
source_code_uri: https://github.com/ksss/orthoses-rails
|
|
79
79
|
changelog_uri: https://github.com/ksss/orthoses-rails
|
|
80
|
-
post_install_message:
|
|
81
80
|
rdoc_options: []
|
|
82
81
|
require_paths:
|
|
83
82
|
- lib
|
|
@@ -92,8 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
92
91
|
- !ruby/object:Gem::Version
|
|
93
92
|
version: '0'
|
|
94
93
|
requirements: []
|
|
95
|
-
rubygems_version: 3.
|
|
96
|
-
signing_key:
|
|
94
|
+
rubygems_version: 3.6.2
|
|
97
95
|
specification_version: 4
|
|
98
96
|
summary: Orthoses middleware collection for Ruby on Rails
|
|
99
97
|
test_files: []
|