tapioca_dsl_compiler_store_model 0.1.2 → 0.1.4
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9ca8704a96779f59a3ee54b8c42f056131e3eceb6268aeab78535498e54f7901
|
|
4
|
+
data.tar.gz: 5d6228ccffd7c51a8990bac5ce048b0d4deaed74b40d5c8d0a0de4d273cf1b45
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 19c5aa8f9e4fb258d6f1587596c0b45cc97e4a6529477cf01680248c2aaadf23e19610c39634d596afe57473db49b9e5fa5f67da4a9e419b441b13c5574b65c8
|
|
7
|
+
data.tar.gz: caf133e5473fc4e32a39aeaa8c49de518df0b88db1719fe60e4a050a37e2d806fbb3e11680c3b8314cae9e4751be5fc25cf89a25b515307ff952daeb8ac92869
|
|
@@ -118,59 +118,70 @@ module Tapioca
|
|
|
118
118
|
sig { params(mod: T.untyped, attribute_name: String).void }
|
|
119
119
|
def create_one_of_single_methods(mod, attribute_name)
|
|
120
120
|
# OneOf types are dynamically resolved, so we use generic StoreModel::Model types
|
|
121
|
-
|
|
121
|
+
create_method_unless_overridden(
|
|
122
|
+
mod,
|
|
122
123
|
attribute_name,
|
|
123
|
-
return_type: "T.nilable(StoreModel::Model)"
|
|
124
|
+
return_type: "T.nilable(::StoreModel::Model)"
|
|
124
125
|
)
|
|
125
126
|
|
|
126
|
-
|
|
127
|
+
create_method_unless_overridden(
|
|
128
|
+
mod,
|
|
127
129
|
"#{attribute_name}=",
|
|
128
130
|
parameters: [create_param("value",
|
|
129
|
-
type: "T.nilable(T.any(StoreModel::Model, T::Hash[T.untyped, T.untyped]))")],
|
|
130
|
-
return_type: "T.nilable(StoreModel::Model)"
|
|
131
|
+
type: "T.nilable(T.any(::StoreModel::Model, T::Hash[T.untyped, T.untyped]))")],
|
|
132
|
+
return_type: "T.nilable(::StoreModel::Model)"
|
|
131
133
|
)
|
|
132
134
|
|
|
133
|
-
|
|
135
|
+
create_method_unless_overridden(
|
|
136
|
+
mod,
|
|
134
137
|
"build_#{attribute_name}",
|
|
135
138
|
parameters: [create_kw_opt_param("attributes", type: "T::Hash[T.untyped, T.untyped]", default: "{}")],
|
|
136
|
-
return_type: "StoreModel::Model"
|
|
139
|
+
return_type: "::StoreModel::Model"
|
|
137
140
|
)
|
|
138
141
|
end
|
|
139
142
|
|
|
140
143
|
sig { params(mod: T.untyped, attribute_name: String).void }
|
|
141
144
|
def create_one_of_array_methods(mod, attribute_name)
|
|
142
145
|
# OneOf array types are dynamically resolved
|
|
143
|
-
|
|
146
|
+
array_type = "T::Array[::StoreModel::Model]"
|
|
147
|
+
nilable_array_type = "T.nilable(#{array_type})"
|
|
148
|
+
|
|
149
|
+
create_method_unless_overridden(
|
|
150
|
+
mod,
|
|
144
151
|
attribute_name,
|
|
145
|
-
return_type:
|
|
152
|
+
return_type: nilable_array_type
|
|
146
153
|
)
|
|
147
154
|
|
|
148
|
-
|
|
155
|
+
create_method_unless_overridden(
|
|
156
|
+
mod,
|
|
149
157
|
"#{attribute_name}=",
|
|
150
158
|
parameters: [create_param("value",
|
|
151
|
-
type: "T.nilable(T.any(
|
|
159
|
+
type: "T.nilable(T.any(#{array_type}, " \
|
|
152
160
|
"T::Array[T::Hash[T.untyped, T.untyped]]))")],
|
|
153
|
-
return_type:
|
|
161
|
+
return_type: nilable_array_type
|
|
154
162
|
)
|
|
155
163
|
end
|
|
156
164
|
|
|
157
165
|
sig { params(mod: T.untyped, attribute_name: String, model_klass: T.untyped).void }
|
|
158
166
|
def create_single_store_model_methods(mod, attribute_name, model_klass)
|
|
159
|
-
return_type = model_klass.name
|
|
167
|
+
return_type = "::#{model_klass.name}"
|
|
160
168
|
|
|
161
|
-
|
|
169
|
+
create_method_unless_overridden(
|
|
170
|
+
mod,
|
|
162
171
|
attribute_name,
|
|
163
172
|
return_type: "T.nilable(#{return_type})"
|
|
164
173
|
)
|
|
165
174
|
|
|
166
|
-
|
|
175
|
+
create_method_unless_overridden(
|
|
176
|
+
mod,
|
|
167
177
|
"#{attribute_name}=",
|
|
168
178
|
parameters: [create_param("value",
|
|
169
179
|
type: "T.nilable(T.any(#{return_type}, T::Hash[T.untyped, T.untyped]))")],
|
|
170
180
|
return_type: "T.nilable(#{return_type})"
|
|
171
181
|
)
|
|
172
182
|
|
|
173
|
-
|
|
183
|
+
create_method_unless_overridden(
|
|
184
|
+
mod,
|
|
174
185
|
"build_#{attribute_name}",
|
|
175
186
|
parameters: [create_kw_opt_param("attributes", type: "T::Hash[T.untyped, T.untyped]", default: "{}")],
|
|
176
187
|
return_type: return_type
|
|
@@ -179,22 +190,45 @@ module Tapioca
|
|
|
179
190
|
|
|
180
191
|
sig { params(mod: T.untyped, attribute_name: String, model_klass: T.untyped).void }
|
|
181
192
|
def create_many_store_model_methods(mod, attribute_name, model_klass)
|
|
182
|
-
return_type = model_klass.name
|
|
193
|
+
return_type = "::#{model_klass.name}"
|
|
183
194
|
array_type = "T::Array[#{return_type}]"
|
|
195
|
+
nilable_array_type = "T.nilable(#{array_type})"
|
|
184
196
|
|
|
185
|
-
|
|
197
|
+
create_method_unless_overridden(
|
|
198
|
+
mod,
|
|
186
199
|
attribute_name,
|
|
187
|
-
return_type:
|
|
200
|
+
return_type: nilable_array_type
|
|
188
201
|
)
|
|
189
202
|
|
|
190
|
-
|
|
203
|
+
create_method_unless_overridden(
|
|
204
|
+
mod,
|
|
191
205
|
"#{attribute_name}=",
|
|
192
206
|
parameters: [create_param("value",
|
|
193
207
|
type: "T.nilable(T.any(#{array_type}, " \
|
|
194
208
|
"T::Array[T::Hash[T.untyped, T.untyped]]))")],
|
|
195
|
-
return_type:
|
|
209
|
+
return_type: nilable_array_type
|
|
196
210
|
)
|
|
197
211
|
end
|
|
212
|
+
|
|
213
|
+
# Skip sig emission when the user has overridden the method (e.g. via
|
|
214
|
+
# `delegate`), as the arity mismatch causes Sorbet error 4010.
|
|
215
|
+
sig { params(mod: T.untyped, name: T.any(String, Symbol), kwargs: T.untyped).void }
|
|
216
|
+
def create_method_unless_overridden(mod, name, **kwargs) # rubocop:disable Style/ArgumentsForwarding
|
|
217
|
+
return if user_overridden?(name)
|
|
218
|
+
|
|
219
|
+
mod.create_method(name.to_s, **kwargs) # rubocop:disable Style/ArgumentsForwarding
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
sig { params(method_name: T.any(String, Symbol)).returns(T::Boolean) }
|
|
223
|
+
def user_overridden?(method_name)
|
|
224
|
+
name = method_name.to_sym
|
|
225
|
+
return false unless constant.method_defined?(name) ||
|
|
226
|
+
constant.private_method_defined?(name)
|
|
227
|
+
|
|
228
|
+
constant.instance_method(name).owner == constant
|
|
229
|
+
rescue NameError
|
|
230
|
+
false
|
|
231
|
+
end
|
|
198
232
|
end
|
|
199
233
|
end
|
|
200
234
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tapioca_dsl_compiler_store_model
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- speria-jp
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-05-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: store_model
|