dry-initializer 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -1
- data/dry-initializer.gemspec +1 -1
- data/lib/dry/initializer/definition.rb +10 -0
- data/spec/definition_spec.rb +16 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67fcba3cf78d1b854e4ff970cc130c505d5d493c
|
4
|
+
data.tar.gz: 8f8efa2a05d06ba5b4f9d0d8db8f70d4bbe1f76a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1ded457500d4a80d184c34a8045f8c7cee0ce914c1d007d980237c1cca6eb2fd9e35f4c5e7a0a7dc55c0b1ec2bc43168d969c549d8aee6e47ba9e6525b789ed
|
7
|
+
data.tar.gz: b948cc6fce3c2b98587364945790942d095997a36b5b9c0ce30ccd53453cff6b12169fcb87c4d086a74862aed7a02ce55bb0332aeef89e513f9af5f3a432f4bf
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,31 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
7
7
|
|
8
|
-
## [2.
|
8
|
+
## [2.1.0] [2017-09-11]
|
9
|
+
|
10
|
+
### Added
|
11
|
+
- Method `#options` to param/option definition (nepalez)
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
class User
|
15
|
+
extend Dry::Initializer
|
16
|
+
option :name, proc(&:to_s), optional: true
|
17
|
+
option :email, optional: true
|
18
|
+
end
|
19
|
+
|
20
|
+
User.dry_initializer.options.map do |option|
|
21
|
+
[option.source, option.options]
|
22
|
+
end
|
23
|
+
# => [
|
24
|
+
# [:name, { type: proc(&:to_s), as: :name, optional: true }],
|
25
|
+
# [:email, { as: :email, optional: true }]
|
26
|
+
# ]
|
27
|
+
```
|
28
|
+
|
29
|
+
This method can be helpful for replicating params/options
|
30
|
+
in another class without inheritance.
|
31
|
+
|
32
|
+
## [2.0.0] [2017-08-28]
|
9
33
|
|
10
34
|
The gem has been rewritten under the hood keeping its documented
|
11
35
|
interface about the same (see "Deleted" section below for the only
|
data/dry-initializer.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = "dry-initializer"
|
3
|
-
gem.version = "2.
|
3
|
+
gem.version = "2.1.0"
|
4
4
|
gem.author = ["Vladimir Kochnev (marshall-lee)", "Andrew Kozin (nepalez)"]
|
5
5
|
gem.email = "andrew.kozin@gmail.com"
|
6
6
|
gem.homepage = "https://github.com/dryrb/dry-initializer"
|
@@ -11,6 +11,16 @@ module Dry::Initializer
|
|
11
11
|
attr_reader :option, :null, :source, :target, :ivar,
|
12
12
|
:type, :optional, :default, :reader
|
13
13
|
|
14
|
+
def options
|
15
|
+
{
|
16
|
+
as: target,
|
17
|
+
type: type,
|
18
|
+
optional: optional,
|
19
|
+
default: default,
|
20
|
+
reader: reader
|
21
|
+
}.reject { |_, value| value.nil? }
|
22
|
+
end
|
23
|
+
|
14
24
|
def name
|
15
25
|
@name ||= (option ? "option" : "parameter") << " '#{source}'"
|
16
26
|
end
|
data/spec/definition_spec.rb
CHANGED
@@ -16,6 +16,22 @@ describe "definition" do
|
|
16
16
|
option :bar
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
it "preservers definition params" do
|
21
|
+
params = Test::Foo.dry_initializer.params.map do |definition|
|
22
|
+
[definition.source, definition.options]
|
23
|
+
end
|
24
|
+
|
25
|
+
expect(params).to eq [[:foo, { as: :foo, reader: :public }]]
|
26
|
+
end
|
27
|
+
|
28
|
+
it "preservers definition options" do
|
29
|
+
options = Test::Foo.dry_initializer.options.map do |definition|
|
30
|
+
[definition.source, definition.options]
|
31
|
+
end
|
32
|
+
|
33
|
+
expect(options).to eq [[:bar, { as: :bar, reader: :public }]]
|
34
|
+
end
|
19
35
|
end
|
20
36
|
|
21
37
|
it_behaves_like :initializer, "extend Dry::Initializer" do
|
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: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Kochnev (marshall-lee)
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-09-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: '0'
|
146
146
|
requirements: []
|
147
147
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.6.13
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: DSL for declaring params and options of the initializer
|