hash_transformer 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -8,10 +8,13 @@ applies a sequence of transforms to a Hash to produce a new Hash
8
8
  delete_key :foo
9
9
  map_key :bar, :baz
10
10
  map_key :foobar, :foobaz
11
+ transform_hash :boo do
12
+ map_key :foofoo, :barbar
13
+ end
11
14
  end
12
15
 
13
- t.transform(:foo=>1, :bar=>2, :foobar=>3)
14
- => {:baz=>2, :foobaz=>3}
16
+ t.transform(:foo=>1, :bar=>2, :foobar=>3, :boo=>{:foofoo=>5})
17
+ => {:baz=>2, :foobaz=>3, :boo=>{:barbar=>5}}
15
18
 
16
19
  == Note on Patches/Pull Requests
17
20
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -18,6 +18,10 @@ class HashTransformer
18
18
  def map_key(key, to)
19
19
  transforms << MapKeyTransform.new(key, to)
20
20
  end
21
+
22
+ def transform_hash(key, &proc)
23
+ transforms << HashTransformerTransform.new(key, &proc)
24
+ end
21
25
  end
22
26
 
23
27
  class DeleteKeyTransform
@@ -52,6 +56,20 @@ class HashTransformer
52
56
  end
53
57
  end
54
58
 
59
+ class HashTransformerTransform
60
+ attr_reader :key
61
+ attr_reader :hash_transformer
62
+
63
+ def initialize(key, &proc)
64
+ @key = key
65
+ @hash_transformer = HashTransformer.new(&proc)
66
+ end
67
+
68
+ def transform(h)
69
+ h[key] = @hash_transformer.transform(h[key])
70
+ end
71
+ end
72
+
55
73
  attr_reader :transforms
56
74
 
57
75
  def initialize(&proc)
@@ -23,4 +23,15 @@ describe "HashTransformer" do
23
23
  }.should raise_error(RuntimeError)
24
24
  end
25
25
  end
26
+
27
+ describe "HashTransformerTransform" do
28
+ it "should transform a hash-valued key" do
29
+ t = HashTransformer.new do
30
+ transform_hash :foo do
31
+ map_key :foofoo, :barbar
32
+ end
33
+ end
34
+ t.transform(:foo=>{:foofoo=>1}).should == {:foo=>{:barbar=>1}}
35
+ end
36
+ end
26
37
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_transformer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - mccraigmccraig of the clan mccraig