key_mapable 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c206c426ca310ad9ed08b6c2c68430f7df31d310e88a741fa0183093f1ec6496
4
- data.tar.gz: 77082bfa61c500b83187eb46bd360b120ba4a3e61e792e8dc26b029591bad28e
3
+ metadata.gz: 349b2af3cb3e4431949d5f510df02e70db98e4ac3dab87ed6642a3226f3fe7a4
4
+ data.tar.gz: a709edbbcea7c7b5b32dee5678390f5600cb50a01314c650eafc6ab4af050ece
5
5
  SHA512:
6
- metadata.gz: '096b7422f4e77ead9f5886db3a0a9a091409319f199b9c1b18cf4b1b3be1ffc776f8e10daa4cf78ca9f953a5953ec61b7c6f93a128e2d3c88cd767470be9cf13'
7
- data.tar.gz: c263a1fd58458d03388129dd49ab41a93613fa45a9cbd9caaf5df53983651a7b71432daa6a3099ee8b11642bae9449bba093682398b0367ac339ec0ca6960051
6
+ metadata.gz: a0a42df03cfafe9c98b8bee5f2eb7c3d2b0ad1d272c9bce7d29adf0237ca3ad8a22f365cba185fb6cfc69c4c76f8d8e35e85d8d9c59eb0404ef40fa2807c091d
7
+ data.tar.gz: e47ae0f0804bde498bf2c2cae9c9e408d2e98f32045eab4ef2ab71ee0b2ec1bced25c06944e07eb96637045aa8d442cf8b04cfaac0f4feaa18abb9fded85fcca
data/Gemfile.lock CHANGED
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- key_mapable (0.1.0)
4
+ key_mapable (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ byebug (10.0.2)
9
10
  diff-lcs (1.3)
10
11
  rake (10.5.0)
11
12
  rspec (3.8.0)
@@ -27,6 +28,7 @@ PLATFORMS
27
28
 
28
29
  DEPENDENCIES
29
30
  bundler (~> 1.16)
31
+ byebug
30
32
  key_mapable!
31
33
  rake (~> 10.0)
32
34
  rspec (~> 3.0)
data/README.md CHANGED
@@ -33,7 +33,7 @@ class MyClass
33
33
 
34
34
  # Map the value of `#maybe_value` to the key 'GuaranteedValue'.
35
35
  # Transform the value by calling `#to_s` first.
36
- key_map(:maybe_value, 'GuaranteedValue', &:to_s)
36
+ key_map(:maybe_value, 'GuaranteedValue') { transform(&:to_s) }
37
37
 
38
38
  # Map the key 'Name' to the value provided by the block.
39
39
  key_value('AConstant') { 'Foo' }
data/key_mapable.gemspec CHANGED
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "bundler", "~> 1.16"
33
33
  spec.add_development_dependency "rake", "~> 10.0"
34
34
  spec.add_development_dependency "rspec", "~> 3.0"
35
+ spec.add_development_dependency "byebug"
35
36
  end
data/lib/key_mapable.rb CHANGED
@@ -9,7 +9,7 @@ module KeyMapable
9
9
  value = public_send(subject)
10
10
  mapper = Mapper.new(value)
11
11
  mapper.instance_eval(&block)
12
- resolve.call(mapper.tree)
12
+ resolve.call(mapper.structure)
13
13
  end
14
14
  end
15
15
  end
@@ -2,45 +2,48 @@
2
2
 
3
3
  # Used internally by the KeyMapable concern.
4
4
  class KeyMapable::Mapper
5
- attr_reader :value, :tree
5
+ attr_reader :subject, :structure
6
6
 
7
- def initialize(value)
8
- @value = value
9
- @tree = {}
7
+ def initialize(subject)
8
+ @subject = subject
9
+ @structure = {}
10
+ end
11
+
12
+ def key_value(key)
13
+ @structure[key] = yield()
10
14
  end
11
15
 
12
16
  def key(name, &block)
13
- child_mapper = self.class.new(value)
17
+ child_mapper = self.class.new(subject)
14
18
  child_mapper.instance_eval(&block)
15
- @tree[name] = child_mapper.resolve
19
+ @structure[name] = child_mapper.resolve
16
20
  end
17
21
 
18
22
  def key_map(original_key, new_key, &block)
19
- original_value = value.public_send(original_key)
23
+ original_subject = subject.public_send(original_key)
20
24
  if block_given?
21
- child_mapper = self.class.new(original_value)
22
- @tree[new_key] = child_mapper.instance_eval do
23
- yield(original_value)
24
- end
25
+ child_mapper = self.class.new(original_subject)
26
+ child_mapper.instance_eval &block
27
+ @structure[new_key] = child_mapper.resolve
25
28
  else
26
- @tree[new_key] = original_value
29
+ @structure[new_key] = original_subject
27
30
  end
28
31
  end
29
32
 
30
- def key_value(key)
31
- @tree[key] = yield()
32
- end
33
-
34
33
  def array_key_map(original_key, new_key, &block)
35
- original_value = value.public_send(original_key)
36
- @tree[new_key] = original_value.map do |item|
34
+ original_subject = subject.public_send(original_key)
35
+ @structure[new_key] = original_subject.map do |item|
37
36
  child_mapper = self.class.new(item)
38
37
  child_mapper.instance_eval(&block)
39
38
  child_mapper.resolve
40
39
  end
41
40
  end
42
41
 
42
+ def transform
43
+ @structure = yield(@subject)
44
+ end
45
+
43
46
  def resolve
44
- @tree
47
+ @structure
45
48
  end
46
49
  end
@@ -1,3 +1,3 @@
1
1
  module KeyMapable
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: key_mapable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emric
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description:
56
70
  email:
57
71
  - emric.mansson@gmail.com