dry-initializer 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c217f0fe5f51a14d0577ab5b43f9b4b976cd7c9
4
- data.tar.gz: a1b2e181c5868340ec17aedce3804687b7b42e23
3
+ metadata.gz: 5f1a12226f496582e5c8b178ce72abca1df2fc4c
4
+ data.tar.gz: 9ce23487b5fb5b34b71d5055f3ed76cdab34fc98
5
5
  SHA512:
6
- metadata.gz: 729f4ba632a30bc9c4b9451e0c9cf1e985aff199ba4e1ddba95d07ee1beb467bb55bc5c374e0a3c0aecb21d9f9eae82e7c39f75a3c1d7aa7db82bef212e68ea6
7
- data.tar.gz: 847c31acf6c91f7f28de176396803e2372df7d45482fc4d0df9928f7420af42ce101778f72fac55f17eeb6af518fd9aa0c6b09a2ec2da78a4468054ec0bd5282
6
+ metadata.gz: 00db904ff87579dfd61ff759f42692f3049647fd20d1ced500f38bb3fca46968e30adf73c274c1ecd825e1c1da0ec017d3e9c06a96e211371c360cb9bf1a6598
7
+ data.tar.gz: 562a60f879ea4e0d60baa4d6ec328b7d8ab51c5f1e061aa9250d3d5f1fcbc7b6e60c5158d0d417dbf60bcabab5426bc090e876ffe26e93a99bee727347c5165b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## v0.9.1 2016-11-06
2
+
3
+ ### Added
4
+
5
+ * Support for renaming an option during initialization (@nepalez)
6
+
7
+ option :name, as: :username # to take :name option and create :username attribute
8
+
9
+ [Compare 0.9.0...v0.9.1](https://github.com/dry-rb/dry-initializer/compare/0.9.0...v0.9.1)
10
+
1
11
  ## v0.9.0 2016-11-06
2
12
 
3
13
  ### Added
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "dry-initializer"
3
- gem.version = "0.9.0"
3
+ gem.version = "0.9.1"
4
4
  gem.author = ["Vladimir Kochnev (marshall-lee)", "Andrew Kozin (nepalez)"]
5
5
  gem.email = ["hashtable@yandex.ru", "andrew.kozin@gmail.com"]
6
6
  gem.homepage = "https://github.com/dryrb/dry-initializer"
@@ -71,7 +71,7 @@ module Dry::Initializer
71
71
 
72
72
  def define_reader(mixin, method, filter_lambda = nil)
73
73
  filter_lambda ||= ->(item) { item.settings[:reader] == method }
74
- readers = @signature.select(&filter_lambda).map(&:name)
74
+ readers = @signature.select(&filter_lambda).map(&:rename)
75
75
  mixin.send method, *readers if readers.any?
76
76
  end
77
77
 
@@ -38,5 +38,11 @@ module Dry::Initializer::Plugins
38
38
  # @return (see .call)
39
39
  def call
40
40
  end
41
+
42
+ # Returns the name for the attribute
43
+ # @return (see .name)
44
+ def rename
45
+ @rename ||= settings[:option] ? settings[:as] || name : name
46
+ end
41
47
  end
42
48
  end
@@ -5,7 +5,7 @@ module Dry::Initializer::Plugins
5
5
  def call
6
6
  return unless default
7
7
 
8
- ivar = :"@#{name}"
8
+ ivar = :"@#{rename}"
9
9
  default_proc = default
10
10
 
11
11
  proc do
@@ -6,9 +6,9 @@ module Dry::Initializer::Plugins
6
6
  return unless settings.key? :type
7
7
 
8
8
  type = settings[:type]
9
- fail TypeConstraintError.new(name, type) unless type.respond_to? :call
9
+ fail TypeConstraintError.new(rename, type) unless type.respond_to? :call
10
10
 
11
- ivar = :"@#{name}"
11
+ ivar = :"@#{rename}"
12
12
  lambda do |*|
13
13
  value = instance_variable_get(ivar)
14
14
  return if value == Dry::Initializer::UNDEFINED
@@ -22,8 +22,8 @@ module Dry::Initializer::Plugins
22
22
 
23
23
  def call
24
24
  return "@#{name} = #{name}" if param?
25
- return "@#{name} = __options__.fetch(:#{name})" if required?
26
- "@#{name} = __options__.fetch(:#{name}, Dry::Initializer::UNDEFINED)"
25
+ return "@#{rename} = __options__.fetch(:#{name})" if required?
26
+ "@#{rename} = __options__.fetch(:#{name}, Dry::Initializer::UNDEFINED)"
27
27
  end
28
28
  end
29
29
  end
@@ -0,0 +1,21 @@
1
+ describe "renaming options" do
2
+ before do
3
+ class Test::Foo
4
+ extend Dry::Initializer::Mixin
5
+
6
+ option :foo, as: :bar
7
+ end
8
+ end
9
+
10
+ subject { Test::Foo.new foo: :BAZ }
11
+
12
+ it "renames the attribute" do
13
+ expect(subject.bar).to eq :BAZ
14
+ expect(subject).not_to respond_to :foo
15
+ end
16
+
17
+ it "renames the variable" do
18
+ expect(subject.instance_variable_get(:@bar)).to eq :BAZ
19
+ expect(subject.instance_variable_get(:@foo)).to be_nil
20
+ end
21
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-initializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Kochnev (marshall-lee)
@@ -131,6 +131,7 @@ files:
131
131
  - spec/options_tolerance_spec.rb
132
132
  - spec/plugin_registry_spec.rb
133
133
  - spec/reader_spec.rb
134
+ - spec/renaming_options_spec.rb
134
135
  - spec/repetitive_definitions_spec.rb
135
136
  - spec/shared_definitions_spec.rb
136
137
  - spec/spec_helper.rb
@@ -173,6 +174,7 @@ test_files:
173
174
  - spec/options_tolerance_spec.rb
174
175
  - spec/plugin_registry_spec.rb
175
176
  - spec/reader_spec.rb
177
+ - spec/renaming_options_spec.rb
176
178
  - spec/repetitive_definitions_spec.rb
177
179
  - spec/shared_definitions_spec.rb
178
180
  - spec/spec_helper.rb