json_defaults 0.1.8 → 0.1.9
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/json_defaults-0.1.8.gem +0 -0
- data/lib/json_defaults.rb +56 -59
- data/lib/json_defaults/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: edb266e8c31d0afd0a9dba8e3b32d6ba33f33ed9a5d788ec5b11b47db79fee12
|
4
|
+
data.tar.gz: 2e1ced8a6eeae357b2fd0cee2e71caff307efde41cb0ebf6aef6e97f5f1813ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3942a81529c1c21d86b8c55bcd05beb3300d35c0df0918f17bcd0059504b550483f51a92914798c6a4d12c15fd88d2635f41ff909d06d558670eaf8c24430652
|
7
|
+
data.tar.gz: d36ac9e6ae31a25824c4b02b53eeccf65b7181c1a786bc932a2e7270470b616a79cb8414e5ed6da9957ad9e21424ce83406f5d6d109b1c980d3e3842db6eda6d
|
Binary file
|
data/lib/json_defaults.rb
CHANGED
@@ -1,81 +1,78 @@
|
|
1
|
-
require
|
1
|
+
require 'json_defaults/version'
|
2
2
|
|
3
3
|
module JsonDefaults
|
4
|
-
|
5
4
|
def json_defaults(field: nil, options: {}, active_record: false)
|
6
5
|
options = options.stringify_keys
|
7
6
|
define_json_methods(field, options)
|
8
|
-
if defined?(ActiveRecord::Base) &&
|
9
|
-
set_default_options(field, options)
|
10
|
-
end
|
7
|
+
set_default_options(field, options) if defined?(ActiveRecord::Base) && ancestors.include?(ActiveRecord::Base)
|
11
8
|
end
|
12
|
-
|
13
|
-
private
|
14
|
-
def define_json_methods(base_field, options)
|
15
|
-
options.each do |field, defaults|
|
16
|
-
define_getter(base_field, field, defaults)
|
17
|
-
define_setter(base_field, field, defaults)
|
18
|
-
end
|
19
|
-
end
|
20
9
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
val[field]
|
28
|
-
else
|
29
|
-
if defaults.is_a?(Hash) && defaults.has_key?(:value)
|
30
|
-
return defaults[:value]
|
31
|
-
else
|
32
|
-
return defaults.is_a?(Hash) ? defaults.stringify_keys : defaults
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
10
|
+
private
|
11
|
+
|
12
|
+
def define_json_methods(base_field, options)
|
13
|
+
options.each do |field, defaults|
|
14
|
+
define_getter(base_field, field, defaults)
|
15
|
+
define_setter(base_field, field, defaults)
|
36
16
|
end
|
17
|
+
end
|
37
18
|
|
38
|
-
|
39
|
-
|
19
|
+
def define_getter(base_field, field, defaults)
|
20
|
+
return if attribute_names.include?(field)
|
21
|
+
|
22
|
+
define_method field do
|
23
|
+
val = send base_field
|
24
|
+
if val && val.is_a?(Hash) && val.has_key?(field)
|
25
|
+
val[field]
|
26
|
+
elsif defaults.is_a?(Hash) && defaults.has_key?(:value)
|
40
27
|
return defaults[:value]
|
41
28
|
else
|
42
|
-
return defaults
|
29
|
+
return defaults.is_a?(Hash) ? defaults.stringify_keys : defaults
|
43
30
|
end
|
44
31
|
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_defult_data(_get_defult_data)
|
35
|
+
if defaults.is_a?(Hash) && defaults.has_key?(:value)
|
36
|
+
defaults[:value]
|
37
|
+
else
|
38
|
+
defaults
|
39
|
+
end
|
40
|
+
end
|
45
41
|
|
46
|
-
|
47
|
-
|
42
|
+
def define_setter(base_field, field, defaults)
|
43
|
+
return if attribute_names.include?(field)
|
48
44
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
object_value = {}
|
53
|
-
end
|
54
|
-
|
55
|
-
if defaults.is_a?(Hash) && defaults.has_key?(:integer) && defaults[:integer]
|
56
|
-
val = val.to_i
|
57
|
-
end
|
45
|
+
define_method "#{field}=" do |val|
|
46
|
+
object_value = send base_field
|
47
|
+
object_value = {} unless val && val.is_a?(Hash)
|
58
48
|
|
59
|
-
|
60
|
-
val = val.is_a?(TrueClass) || val.respond_to?(:to_i) && val.to_i == 1
|
61
|
-
end
|
49
|
+
val = val.to_i if defaults.is_a?(Hash) && defaults.has_key?(:integer) && defaults[:integer]
|
62
50
|
|
63
|
-
|
64
|
-
|
65
|
-
send("#{base_field}=", {
|
66
|
-
**send("#{base_field}").symbolize_keys,
|
67
|
-
**object_value.symbolize_keys
|
68
|
-
})
|
51
|
+
if defaults.is_a?(Hash) && defaults.has_key?(:boolean) && defaults[:boolean]
|
52
|
+
val = val.is_a?(TrueClass) || val.respond_to?(:to_i) && val.to_i == 1
|
69
53
|
end
|
70
|
-
end
|
71
54
|
|
72
|
-
|
55
|
+
object_value[field] = val
|
73
56
|
|
74
|
-
|
57
|
+
send("#{base_field}=", {
|
58
|
+
**send(base_field.to_s).symbolize_keys,
|
59
|
+
**object_value.symbolize_keys
|
60
|
+
})
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def set_default_options(field, options)
|
65
|
+
after_initialize do |model|
|
66
|
+
if model.respond_to?(field)
|
75
67
|
if model.send(field).blank?
|
76
|
-
model.send("#{field}=", options.each
|
68
|
+
model.send("#{field}=", options.each do |key, value|
|
69
|
+
options[key] = if value.is_a?(Hash) && value.has_key?(:value)
|
70
|
+
value[:value]
|
71
|
+
else
|
72
|
+
value
|
73
|
+
end
|
74
|
+
end)
|
77
75
|
else
|
78
|
-
|
79
76
|
options.each do |key, value|
|
80
77
|
have_key = model.send(field).key?(key.to_s)
|
81
78
|
|
@@ -84,14 +81,14 @@ module JsonDefaults
|
|
84
81
|
|
85
82
|
model_value = model.send(field).try(:[], key.to_s).try(:stringify_keys)
|
86
83
|
|
87
|
-
if !have_key
|
84
|
+
if !have_key
|
88
85
|
model.send(field)[key] = default_value
|
89
86
|
elsif have_key && model_value.is_a?(Hash)
|
90
87
|
model.send(field)[key] = default_value.merge(model_value)
|
91
88
|
end
|
92
|
-
|
93
|
-
end
|
89
|
+
end
|
94
90
|
end
|
95
91
|
end
|
96
92
|
end
|
93
|
+
end
|
97
94
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_defaults
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DenDos
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- Rakefile
|
94
94
|
- bin/console
|
95
95
|
- bin/setup
|
96
|
+
- json_defaults-0.1.8.gem
|
96
97
|
- json_defaults.gemspec
|
97
98
|
- lib/json_defaults.rb
|
98
99
|
- lib/json_defaults/version.rb
|