odm 0.4.0 → 0.5.1

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 (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -4
  3. data/VERSION +1 -1
  4. data/examples/level.rb +10 -3
  5. data/lib/odm.rb +18 -3
  6. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 442aa0b448f0dee8bf70643a1e325d46dbe2a72c
4
- data.tar.gz: c1ce6e3f2412782cf388c08f200a1dedf72c0f3a
3
+ metadata.gz: d7f5556d02049a79c19e2105f6314c64cfdd55c6
4
+ data.tar.gz: c86f577670bada50d796a1f2857bb46463c339e0
5
5
  SHA512:
6
- metadata.gz: f4c5d51f2ce44cbfcb1c4c6b2380e983af6d39940ed6fb32a00ab308dbdd77fbda2c6f88a23f488bd77591c9be94d759fc23931bb51a86d8d3c0a00df5c41937
7
- data.tar.gz: 3045e9e10c500c495c608363cd76baff55a5ecf2b9d6e326dd6148657f9b5716713258391221e41f35aeddd774db2c2818947a33a21099ccfe94e42fb72c5966
6
+ metadata.gz: 2ebfb8dd144fb11d8274f88a1d2fb0db3222c05f76fa7dbb304850d567a78e86c101a15a4cbc8be86f54e0596cd8a87c78ac6bafec9e99350a087830b4e78c02
7
+ data.tar.gz: 37e8700f3c6348fb52be92ac3a60b1804b2b3ee9bfa92c9b73fde5c02189c13324283aa1efda06c11e0c17429b6d065caeae94a890bd7e21e7bfcbcec2ea2f2e
data/README.md CHANGED
@@ -3,7 +3,9 @@ ODM
3
3
 
4
4
  Simple Object Data Mapper
5
5
 
6
- Parse Array of Hash into random Class of classes to make it more object oriented on the fly :)
6
+ Parse Array of Hash or any complex object into subclass of the main ones to make it more object oriented on the fly :)
7
+ Why? Because you can make scopes like that to incoming datas like json.
8
+ And with that you can have random methods on the objects without the need of analyze the data :)
7
9
 
8
10
  at this point the following classes (and they child's) are implemented:
9
11
  * [ Module, Array, Hash, Regexp, String, File, IO ]
@@ -58,10 +60,18 @@ we can simply pass to opts the defaults we want to be used when the parser find
58
60
  class ARRAY2 < Array
59
61
  end
60
62
 
61
- #> for deepness level 0 | for deepness level 1 set instance variable "var" with value: "hello"
62
- odm= ODM.new( { array: ARRAY1 }, { array: ARRAY2 }, [:var,"hello"] ) do |opts|
63
+ odm= ODM.new(
63
64
 
64
- # defaults for else places (if block not given, no parse will be made)
65
+ # defaults for deepness level 0
66
+ { array: ARRAY1 },
67
+
68
+ # defaults for deepness level 1
69
+ { array: ARRAY2 },
70
+
71
+ # default instance variables to be set for each object
72
+ [:var,"hello"] ) do |opts|
73
+
74
+ # defaults for else places (if no target class given,than no parse will be made)
65
75
  opts.array= ARRAYDEF
66
76
 
67
77
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.1
@@ -9,15 +9,22 @@ end
9
9
  class ARRAY2 < Array
10
10
  end
11
11
 
12
- #> for deepness level 0 | for deepness level 1 set instance variable "var" with value: "hello"
13
- odm= ODM.new( { array: ARRAY1 }, { array: ARRAY2 }, [:var,"hello"] ) do |opts|
12
+ odm= ODM.new(
13
+
14
+ # defaults for deepness level 0
15
+ { array: ARRAY1 },
16
+
17
+ # defaults for deepness level 1
18
+ { array: ARRAY2 },
19
+
20
+ # default instance variables to be set for each object
21
+ [:var,"hello"] ) do |opts|
14
22
 
15
23
  # defaults for else places (if block not given, no parse will be made)
16
24
  opts.array= ARRAYDEF
17
25
 
18
26
  end
19
27
 
20
-
21
28
  obj= [[[]]]
22
29
  var= odm.parse obj
23
30
  puts odm.state
data/lib/odm.rb CHANGED
@@ -28,6 +28,14 @@ module ODM
28
28
  return nil
29
29
  end
30
30
 
31
+ def array_to_hash_merge_parser(klass,array)
32
+
33
+ var= klass.new
34
+ array.each{|hash| var.merge!(hash) }
35
+ return var
36
+
37
+ end
38
+
31
39
  end
32
40
  end
33
41
 
@@ -133,20 +141,27 @@ module ODM
133
141
  var.instance_variable_set( "@#{ary[0]}",ary[1] )
134
142
  end
135
143
 
136
- var #> return
144
+ var #> return and shift down level
137
145
  end
138
146
 
139
147
  when :hash
140
148
 
141
149
  klass= get_class.call(obj)
142
150
  return level do
143
- var= klass[ *obj.map{ |k,v| { self.parse(k) => self.parse(v) } } ]
151
+
152
+ var= nil
153
+ begin
154
+ var= obj.map{ |k,v| { self.parse(k) => self.parse(v) } }
155
+ var= klass[ *var ]
156
+ rescue ArgumentError
157
+ var= ODM::Helper.array_to_hash_merge_parser(klass,var)
158
+ end
144
159
 
145
160
  @instance_variables.each do |ary|
146
161
  var.instance_variable_set( "@#{ary[0]}",ary[1] )
147
162
  end
148
163
 
149
- var #> return
164
+ var #> return and shift down level
150
165
  end
151
166
 
152
167
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: odm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-10 00:00:00.000000000 Z
11
+ date: 2014-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler