options_model 0.0.18 → 0.0.19
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/options_model/concerns/attributes.rb +15 -23
- data/lib/options_model/version.rb +1 -1
- data/lib/tasks/options_model_tasks.rake +1 -0
- metadata +7 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 28e0b4a7b8338b22d82fe86ab8953ab930bef18fa0f8841b5561909d02b29bae
|
|
4
|
+
data.tar.gz: 72fa3751a21a14d82a38111435c8a26fb4570415d5c3ff065c54a0939926e88c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8e0bdaf0cb45c615834c311045d16905c4e1dcccccca8a6e7b3741e80a498d32a06012152f6e2f53b8ce048256d88569ce019f9705108e3695adbdaee645e8f8
|
|
7
|
+
data.tar.gz: b8a10cb002ab6a58f85c5c368c89e00e1d3c806d98925671dc9e822d300859314ccd21f6e93eadd7e9b42b404c84764111b6a60b9f9a354ee9121b72d6baac90
|
|
@@ -24,18 +24,17 @@ module OptionsModel
|
|
|
24
24
|
""
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
generated_attribute_methods.
|
|
28
|
-
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
|
|
27
|
+
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
|
|
29
28
|
def #{name}
|
|
30
29
|
value = attributes[:#{name}]
|
|
31
30
|
return value unless value.nil?
|
|
32
31
|
attributes[:#{name}] = self.class.attribute_defaults[:#{name}]#{default_extractor}
|
|
33
32
|
attributes[:#{name}]
|
|
34
33
|
end
|
|
35
|
-
|
|
34
|
+
STR
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
if array
|
|
37
|
+
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
|
|
39
38
|
def #{name}=(value)
|
|
40
39
|
if value.respond_to?(:to_a)
|
|
41
40
|
attributes[:#{name}] = value.to_a.map { |i| ActiveModel::Type.lookup(:#{cast_type}).cast(i) }
|
|
@@ -46,16 +45,15 @@ module OptionsModel
|
|
|
46
45
|
"`value` should respond to `to_a`, but got \#{value.class} -- \#{value.inspect}"
|
|
47
46
|
end
|
|
48
47
|
end
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
STR
|
|
49
|
+
else
|
|
50
|
+
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
|
|
52
51
|
def #{name}=(value)
|
|
53
52
|
attributes[:#{name}] = ActiveModel::Type.lookup(:#{cast_type}).cast(value)
|
|
54
53
|
end
|
|
55
|
-
|
|
54
|
+
STR
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
end
|
|
56
|
+
generated_attribute_methods.send :alias_method, :"#{name}?", name if cast_type == :boolean
|
|
59
57
|
end
|
|
60
58
|
|
|
61
59
|
attribute_names_for_inlining << name
|
|
@@ -100,14 +98,13 @@ module OptionsModel
|
|
|
100
98
|
anonymous_class
|
|
101
99
|
end
|
|
102
100
|
|
|
103
|
-
generated_attribute_methods.
|
|
104
|
-
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
|
|
101
|
+
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
|
|
105
102
|
def #{name}
|
|
106
103
|
nested_attributes[:#{name}] ||= self.class.nested_classes[:#{name}].new(attributes[:#{name}])
|
|
107
104
|
end
|
|
108
|
-
|
|
105
|
+
STR
|
|
109
106
|
|
|
110
|
-
|
|
107
|
+
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
|
|
111
108
|
def #{name}=(value)
|
|
112
109
|
klass = self.class.nested_classes[:#{name}]
|
|
113
110
|
if value.respond_to?(:to_h)
|
|
@@ -121,8 +118,7 @@ module OptionsModel
|
|
|
121
118
|
"`value` should respond to `to_h` or \#{klass}, but got \#{value.class}"
|
|
122
119
|
end
|
|
123
120
|
end
|
|
124
|
-
|
|
125
|
-
end
|
|
121
|
+
STR
|
|
126
122
|
|
|
127
123
|
attribute_names_for_nesting << name
|
|
128
124
|
|
|
@@ -194,15 +190,11 @@ module OptionsModel
|
|
|
194
190
|
end
|
|
195
191
|
|
|
196
192
|
def generated_attribute_methods
|
|
197
|
-
@generated_attribute_methods ||= Module.new
|
|
198
|
-
extend Mutex_m
|
|
199
|
-
end.tap { |mod| include mod }
|
|
193
|
+
@generated_attribute_methods ||= Module.new.tap { |mod| include mod }
|
|
200
194
|
end
|
|
201
195
|
|
|
202
196
|
def generated_class_methods
|
|
203
|
-
@generated_class_methods ||= Module.new
|
|
204
|
-
extend Mutex_m
|
|
205
|
-
end.tap { |mod| extend mod }
|
|
197
|
+
@generated_class_methods ||= Module.new.tap { |mod| include mod }
|
|
206
198
|
end
|
|
207
199
|
end
|
|
208
200
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: options_model
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.19
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- jasl
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-02-08 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activemodel
|
|
@@ -19,7 +18,7 @@ dependencies:
|
|
|
19
18
|
version: '5'
|
|
20
19
|
- - "<"
|
|
21
20
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
21
|
+
version: '9'
|
|
23
22
|
type: :runtime
|
|
24
23
|
prerelease: false
|
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,7 +28,7 @@ dependencies:
|
|
|
29
28
|
version: '5'
|
|
30
29
|
- - "<"
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
31
|
+
version: '9'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
34
33
|
name: activesupport
|
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,7 +38,7 @@ dependencies:
|
|
|
39
38
|
version: '5'
|
|
40
39
|
- - "<"
|
|
41
40
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '
|
|
41
|
+
version: '9'
|
|
43
42
|
type: :runtime
|
|
44
43
|
prerelease: false
|
|
45
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -49,7 +48,7 @@ dependencies:
|
|
|
49
48
|
version: '5'
|
|
50
49
|
- - "<"
|
|
51
50
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: '
|
|
51
|
+
version: '9'
|
|
53
52
|
- !ruby/object:Gem::Dependency
|
|
54
53
|
name: psych
|
|
55
54
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -87,7 +86,6 @@ homepage: https://github.com/jasl-lab/options_model
|
|
|
87
86
|
licenses:
|
|
88
87
|
- MIT
|
|
89
88
|
metadata: {}
|
|
90
|
-
post_install_message:
|
|
91
89
|
rdoc_options: []
|
|
92
90
|
require_paths:
|
|
93
91
|
- lib
|
|
@@ -102,8 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
102
100
|
- !ruby/object:Gem::Version
|
|
103
101
|
version: '0'
|
|
104
102
|
requirements: []
|
|
105
|
-
rubygems_version: 3.
|
|
106
|
-
signing_key:
|
|
103
|
+
rubygems_version: 3.6.3
|
|
107
104
|
specification_version: 4
|
|
108
105
|
summary: Make easier to handle model which will be serialized in a real model.
|
|
109
106
|
test_files: []
|