corm 0.0.5 → 0.0.6

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.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/corm/model.rb +35 -19
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NTdiOTNmODcyZDNiYmUzYzE5Zjc1Mjk3ZmNhYmRjMWM1ODVmODMzZA==
4
+ ZmU2OWMwZDRlZWY0YmMzYzRlNWE2MWJiZDBmNzQ0ODFkZjdkYWQ4Yg==
5
5
  data.tar.gz: !binary |-
6
- NDAzNTA3M2YzNDllMDFjYWNkNmI0Yzg4N2I2Y2ExMmE1MTEwMzUyNw==
6
+ NTI0YTYxZTA2YzVlMzNmOWMzN2QwYTlmYzA4NTBmNWM3NmMzM2IzMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTE4YjljNGI1ODFhOTU2YjI4YmI5NDk5ZGU5OTc3NDdlYjk2YWYyZDgxZTU1
10
- ZTQ5MzdhNWFiNDM1Y2ZlZWI5ZWI1NWU4OTkzZWY4M2Q5NDM3MGMxODE1OGY3
11
- YTRjNmM3YWI5NTk3YTIzN2IyYmZlYmQzNjc3MzY3MzAyMzA2OGQ=
9
+ NTU0ZjBiNmVkZTEyZGVhNzZhYTM1OTExMzExMTJhNzE4ZGQ0NmFkODViN2Rh
10
+ MDE2ODRmN2FlNDdjZmQ0MzY5OTEwMDM0NzM0MTNmZjE1MzEzOTM1MWJmYmY2
11
+ NmQ5OTFlMzdiODBmMTBkYjhkNTFlM2QwZDVhYmI5NzE1YmNmZTA=
12
12
  data.tar.gz: !binary |-
13
- MDc0YmE2YWFmNThkYWVkOWYzNjA2NmFhZWU2MGVjZTdlNWEzNDkwOThlMWEz
14
- NDZkMDdiYTQwNDZiZmRmNzcwNGYyZDBmZGZmMjM1NjJmN2VlNWI2MDRjYTEz
15
- MGU4OTNkZjc3NTE2MGQzOTNhOTcyYjUyYWZlYTRmYjI1NGM4ODQ=
13
+ YzcwYTJkZTM0YTE1MGQyNjUyYzdiMWVhNjk5OTliNGU5MDYzMzQ3ODRkZTEz
14
+ MmFlYmRiOGIzYTNmZTkxYTYzYWI3OTZiZjc0MTNiNTQyZDg1ODQxMTM1MDRi
15
+ NWYzYTY5ZGJkYzIzMDcwOTAzMGE2MGJhNGU2YmUzMzliNTgyZWQ=
data/lib/corm/model.rb CHANGED
@@ -29,53 +29,69 @@ module Corm
29
29
 
30
30
  primary_key name.to_s.downcase if pkey
31
31
 
32
- send(:define_method, name.to_s.downcase) do
33
- type = self.class.fields[name.to_s.downcase].to_s
32
+ send :define_method, name.to_s.downcase do
33
+ type = self.class.fields[name.to_s.downcase].to_s.downcase
34
34
  value = record[name.to_s.downcase]
35
35
  if type == 'json'
36
- MultiJson.decode value
36
+ value.nil? ? '' : MultiJson.decode(value)
37
37
  elsif type.start_with?('list') && type['json']
38
- value.map{|s| MultiJson.decode s}
38
+ value.nil? ? [] : value.map{|s| MultiJson.decode s}
39
+ elsif type.start_with?('list')
40
+ value.nil? ? [] : value
39
41
  elsif type.start_with?('set') && type['json']
40
- Set.new value.map{|s| MultiJson.decode s}
42
+ Set.new(value.nil? ? [] : value.map{|s| MultiJson.decode s})
43
+ elsif type.start_with?('set')
44
+ Set.new []
41
45
  elsif type.start_with?('map') && type['json']
42
- value.inject({}) do |hash, (k, v)|
46
+ hash = {}
47
+ (value || {}).each do |k, v|
43
48
  k = MultiJson.decode k if type['json,'] || type['json ,']
44
49
  v = MultiJson.decode v if type[', json'] || type[',json']
45
- hash.merge(k => v)
50
+ hash[k] = v
46
51
  end
52
+ hash
53
+ elsif type.start_with?('map')
54
+ {}
47
55
  else
48
56
  value
49
57
  end
50
58
  end
51
59
 
52
- send(:define_method, '[]') do |field|
60
+ send :define_method, '[]' do |field|
53
61
  send field.to_s.downcase
54
62
  end
55
63
 
56
- send(:define_method, "#{name.to_s.downcase}=") do |value|
57
- type = self.class.fields[name.to_s.downcase].to_s
64
+ send :define_method, "#{name.to_s.downcase}=" do |value|
65
+ type = self.class.fields[name.to_s.downcase].to_s.downcase
58
66
  record[name.to_s.downcase] = if type == 'json'
59
- MultiJson.encode value
67
+ value.to_s.empty? ? nil : MultiJson.encode(value)
60
68
  elsif type.start_with?('list') && type['json']
61
- value.map{|s| MultiJson.encode s}
69
+ value.to_a.empty? ? [] : value.map{|s| MultiJson.encode s}
70
+ elsif type.start_with?('list')
71
+ value.nil? ? [] : value
62
72
  elsif type.start_with?('set') && type['json']
63
- Set.new value.map{|s| MultiJson.encode s}
73
+ Set.new(value.nil? ? [] : value.map{|s| MultiJson.encode s})
74
+ elsif type.start_with?('set')
75
+ Set.new []
64
76
  elsif type.start_with?('map') && type['json']
65
- value.inject({}) do |hash, (k, v)|
77
+ hash = {}
78
+ (value || {}).each do |k, v|
66
79
  k = MultiJson.encode k if type['json,'] || type['json ,']
67
80
  v = MultiJson.encode v if type[', json'] || type[',json']
68
- hash.merge(k => v)
81
+ hash[k] = v
69
82
  end
83
+ hash
84
+ elsif type.start_with?('map')
85
+ {}
70
86
  else
71
87
  value
72
88
  end
73
89
  end
74
-
75
- send(:define_method, '[]=') do |field, value|
90
+
91
+ send :define_method, '[]=' do |field, value|
76
92
  send "#{field.to_s.downcase}=", value
77
93
  end
78
-
94
+
79
95
  nil
80
96
  end
81
97
 
@@ -169,7 +185,7 @@ module Corm
169
185
  nil
170
186
  end
171
187
 
172
- private
188
+ protected
173
189
 
174
190
  def execute *args
175
191
  self.class.execute *args
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: corm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Fontanelli