blizz 0.1 → 0.2

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. data/Readme.md +24 -1
  2. data/lib/blizz.rb +14 -8
  3. metadata +1 -1
data/Readme.md CHANGED
@@ -21,4 +21,27 @@ Simple isn't it?
21
21
  Useful for prototyping domain models, DDD, etc :)
22
22
 
23
23
 
24
- TODO: release it as a gem asap :)
24
+ ## more...
25
+
26
+ ### load array of hases
27
+
28
+ load arrays of hashes, give them a :type and watch how Blizz casts them to classes!
29
+
30
+ ### partial loading
31
+
32
+ load only some properties of the hash in to the classs selectively
33
+
34
+ example:
35
+
36
+ ```
37
+ example = Blizz.load Example, hash, [:a]
38
+ ```
39
+
40
+ will load `a: "b"` but not `c: "d"`
41
+
42
+
43
+
44
+
45
+
46
+ have fun!
47
+ @makevoid
data/lib/blizz.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  class Blizz
2
2
 
3
- VERSION = "0.1"
3
+ VERSION = "0.2"
4
4
 
5
- def self.load(klass, hash)
5
+ def self.load(klass, hash, selection=nil)
6
6
  page = klass.new
7
- page.load hash
7
+ page.load hash, selection
8
8
  page
9
9
  end
10
10
 
@@ -14,9 +14,9 @@ class Blizz
14
14
  self.class
15
15
  end
16
16
 
17
- def load(hash)
17
+ def load(hash, selection)
18
18
  klass.create_accessors hash
19
- load_contents hash
19
+ load_contents hash, selection
20
20
  end
21
21
 
22
22
  def self.included(mod)
@@ -31,8 +31,10 @@ class Blizz
31
31
 
32
32
  private
33
33
 
34
- def load_contents(hash)
34
+ def load_contents(hash, selection)
35
35
  hash.map do |key, val|
36
+ next if selection && !selection.include?(key.to_sym)
37
+
36
38
  if array_of_hashes? val
37
39
  val = replace_contents val
38
40
  end
@@ -47,8 +49,12 @@ class Blizz
47
49
 
48
50
  def replace_contents(array)
49
51
  array.map do |hash|
50
- klass = Object.const_get hash[:type]
51
- Blizz.load klass, hash
52
+ if hash[:type]
53
+ klass = Object.const_get hash[:type]
54
+ Blizz.load klass, hash
55
+ else
56
+ hash
57
+ end
52
58
  end
53
59
  end
54
60
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blizz
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: