dry-initializer 0.9.0 → 0.9.1

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
  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