odm 0.1.0 → 0.2.0

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 (7) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -9
  3. data/VERSION +1 -1
  4. data/examples/test.rb +2 -10
  5. data/lib/odm.rb +6 -6
  6. data/odm.gemspec +2 -1
  7. metadata +2 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d205de950ed17bd916da606c25e3671e5fe7c481
4
- data.tar.gz: 52bbdd77947520bf8e56a0e636cb4bf94b092a8d
3
+ metadata.gz: 6d0492cc264952b0257f26144c4d44845b4e4772
4
+ data.tar.gz: 67517e6cf32613e3b19c3533fa17fd10f566be68
5
5
  SHA512:
6
- metadata.gz: cd7ac421ce051af891cebae298131e65a8a5efe7bc8d4d72d351c370b2646fa2f36a738598bd366d17918d2ecf0aed4a22595abb8291f312788e21208af767a2
7
- data.tar.gz: 8bb06f2211370f03f65673ba4e81d8cea726379af2b260140ad884cf91b621d53421e6e95bc12ec8534ca27e93b01c59870fc8753a9ab936321e9e9cacf292e0
6
+ metadata.gz: 7bd7befd4a122576f1ba3ea5a6c8d9572f6faf300d6cb4fef551832c9c3ea6c887c5883a8370d84134c2a74459a4a86a1e34ef0e8b4159515e2ca7d26674492f
7
+ data.tar.gz: a13ddc9a3d73eb680763402b618e3862cd3eccc91ef2c123c8e62f7e6cbc59cfd89d66700a76ceef6231800868e4e0b59e83c9197f09e0a38e6beae93273e45b
data/README.md CHANGED
@@ -5,28 +5,34 @@ Simple Object Data Mapper
5
5
 
6
6
  Parse Array of Hash into random Class of classes to make it more object oriented on the fly :)
7
7
 
8
+ at this point the following classes (and they child's) are implemented:
9
+ * [ Module, Array, Hash, Regexp, String, File, IO ]
10
+
11
+ initialize method will be called directly in array and hash classes,
12
+ but will be exception handled if Argument or NoMethod Error occurs
13
+
8
14
  ### example
9
15
 
10
16
  ```ruby
11
17
 
12
18
  require 'odm'
13
19
 
14
- class ARRAY < Array
20
+ #> some random class as target models
15
21
 
22
+ class STRING < String
23
+ end
24
+
25
+ class ARRAY < Array
16
26
  end
17
27
 
18
28
  class HASH < Hash
19
29
 
20
30
  def initialize original_obj
21
- # some stuff on init
31
+ # some stuff on init for fun
22
32
  end
23
33
 
24
34
  end
25
35
 
26
- class STRING < String
27
-
28
- end
29
-
30
36
  odm= ODM.new do |opts|
31
37
  opts.array = ARRAY
32
38
  opts.hash = HASH
@@ -35,9 +41,7 @@ Parse Array of Hash into random Class of classes to make it more object oriented
35
41
 
36
42
  var= odm.parse [ {hello: {"world" => "hey!"} }, 123 ]
37
43
  puts var.inspect,var.class,var[0].class,var[0][:hello].keys[0].class
38
- #> ARRAY
39
- #> HASH
40
- #> STRING
44
+ #> [{:hello=>{"world"=>"hey!"}}, 123], ARRAY, HASH, STRING
41
45
 
42
46
  ```
43
47
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/examples/test.rb CHANGED
@@ -1,32 +1,24 @@
1
1
  require_relative "../lib/odm"
2
2
 
3
3
  class ARRAY < Array
4
-
5
4
  end
6
5
 
7
6
  class HASH < Hash
8
-
9
- def initialize obj
10
- # puts obj
11
- end
12
-
13
7
  end
14
8
 
15
9
  class STRING < String
16
-
17
10
  end
18
11
 
19
12
  odm= ODM.new do |opts|
20
13
  opts.array = ARRAY
21
14
  opts.hash = HASH
22
15
  opts.string = STRING
23
- opts.symbol = SYMBOL
24
16
  end
25
17
 
26
18
  var= odm.parse [ {hello: {"world" => "hey!"} }, 123 ]
27
- puts var.inspect,var.class,var[0].class,var[0][:hello].keys[0].class,var[0].keys[0].class
19
+ puts [var.class,var[0].class,var[0][:hello].keys[0].class].join(', ')
28
20
 
29
21
  require 'yaml'
30
22
  yaml_data= [ {hello: {"world" => "hey!"} }, 123 ].to_yaml
31
23
 
32
- puts odm.parse_yml(yaml_data).inspect
24
+ odm.parse_yml(yaml_data).inspect
data/lib/odm.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'mpatch'
2
-
3
1
  module ODM
4
2
 
5
3
  CoreClasses= [ ::Module, ::Array, ::Hash, ::Regexp, ::String, ::File, ::IO ] #> Fixnum, Float, Integer dont have .new
@@ -39,7 +37,7 @@ module ODM
39
37
 
40
38
  define_method(core_class.to_s.downcase+"=") do |klass|
41
39
  raise(ArgumentError,"Invalid object for class: #{klass}") unless klass.class == ::Class
42
- raise(ArgumentError,"Invalid parse class: #{klass}") unless klass <= core_class
40
+ raise(ArgumentError,"Invalid parse class: #{klass}, must be or subclass of the #{core_class} class") unless klass <= core_class
43
41
  self.instance_variable_set( "@#{core_class.to_s.downcase}", klass )
44
42
  end
45
43
 
@@ -70,10 +68,12 @@ module ODM
70
68
  case ODM::Helper.class?( obj.class ).to_s.downcase.to_sym
71
69
 
72
70
  when :array
73
- return @class.__send__(ODM::Helper.class?( obj.class ).to_s.downcase).new(obj.map{ |e| self.parse!(e) })
71
+ var= @class.__send__(ODM::Helper.class?( obj.class ).to_s.downcase)[ *obj.map!{ |e| self.parse!(e) } ]
72
+ begin; var.__send__( :initialize, obj ) ;rescue ::NoMethodError,::ArgumentError ;end
73
+ return var
74
74
 
75
75
  when :hash
76
- var= @class.__send__(ODM::Helper.class?( obj.class ).to_s.downcase)[ obj.map_hash{ |k,v| { self.parse!(k) => self.parse!(v) } } ]
76
+ var= @class.__send__(ODM::Helper.class?( obj.class ).to_s.downcase)[ *obj.map{ |k,v| { self.parse!(k) => self.parse!(v) } } ]
77
77
  begin; var.__send__( :initialize, obj ) ;rescue ::NoMethodError,::ArgumentError ;end
78
78
  return var
79
79
 
@@ -85,7 +85,7 @@ module ODM
85
85
  return obj if klass.nil?
86
86
  return klass.new(obj)
87
87
 
88
- rescue ::NoMethodError,::ArgumentError
88
+ rescue ::NoMethodError, ::ArgumentError
89
89
  return obj
90
90
  end
91
91
 
data/odm.gemspec CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.add_development_dependency "bundler"
18
18
  spec.add_development_dependency "rake"
19
- spec.add_dependency "mpatch", ">= 2.12.1"
19
+
20
+ # spec.add_dependency "mpatch", ">= 2.12.1"
20
21
 
21
22
  end
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.1.0
4
+ version: 0.2.0
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-09 00:00:00.000000000 Z
11
+ date: 2014-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: mpatch
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 2.12.1
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 2.12.1
55
41
  description: " Simple Object Data Mapper. Parse Array of Hash into random Class of
56
42
  classes to make it more object oriented "
57
43
  email: