dry-initializer 2.1.0 → 2.2.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
  SHA1:
3
- metadata.gz: 67fcba3cf78d1b854e4ff970cc130c505d5d493c
4
- data.tar.gz: 8f8efa2a05d06ba5b4f9d0d8db8f70d4bbe1f76a
3
+ metadata.gz: a1ca51134d5d589e28d742d78ea453809ef53ea0
4
+ data.tar.gz: e1c9fe841d80609eb35a17f2d5742bae2f9dd026
5
5
  SHA512:
6
- metadata.gz: d1ded457500d4a80d184c34a8045f8c7cee0ce914c1d007d980237c1cca6eb2fd9e35f4c5e7a0a7dc55c0b1ec2bc43168d969c549d8aee6e47ba9e6525b789ed
7
- data.tar.gz: b948cc6fce3c2b98587364945790942d095997a36b5b9c0ce30ccd53453cff6b12169fcb87c4d086a74862aed7a02ce55bb0332aeef89e513f9af5f3a432f4bf
6
+ metadata.gz: eb91104134574f2c106b813076de9798788f558c25cdd0bdadc0098fc6f90cea915d15e742d4805fcd32aed28c5e53a4801ed04397a51c8a668d69989f4dc8d4
7
+ data.tar.gz: b104ca6bd0b5b46de69036754a7669b162bc88856aec29a298571bf5a988d8eee1c54c15aa0a0b774b872e12f2a596f190796a62f43ea36f333fe5fb4d3a4802
@@ -5,6 +5,28 @@ 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.2.0] [2017-09-13]
9
+
10
+ ### Added
11
+ - Option `:desc` for option/param to add a description (nepalez)
12
+
13
+ - Methods `Definition#inch` and `Config#inch` to inspect definitions (nepalez)
14
+
15
+ ```ruby
16
+ class User
17
+ extend Dry::Initializer
18
+ option :name, proc(&:to_s), optional: true, desc: "User name"
19
+ option :email, optional: true, desc: "user email"
20
+ end
21
+
22
+ User.dry_initializer.inch
23
+ # @!method initialize(*, **options)
24
+ # Initializes an instance of User
25
+ # @option [Object] :name (optional) User name
26
+ # @option [Object] :email (optional) User email
27
+ # @return [User]
28
+ ```
29
+
8
30
  ## [2.1.0] [2017-09-11]
9
31
 
10
32
  ### Added
@@ -687,3 +709,5 @@ First public release
687
709
  [1.4.0]: https://github.com/dry-rb/dry-initializer/compare/v1.3.0...v1.4.0
688
710
  [1.4.1]: https://github.com/dry-rb/dry-initializer/compare/v1.4.0...v1.4.1
689
711
  [2.0.0]: https://github.com/dry-rb/dry-initializer/compare/v1.4.1...v2.0.0
712
+ [2.1.0]: https://github.com/dry-rb/dry-initializer/compare/v2.0.0...v2.1.0
713
+ [2.2.0]: https://github.com/dry-rb/dry-initializer/compare/v2.1.0...v2.2.0
data/README.md CHANGED
@@ -46,7 +46,7 @@ require 'dry-initializer'
46
46
  require 'dry-types'
47
47
 
48
48
  class User
49
- extend Dry::Initializer::Mixin
49
+ extend Dry::Initializer
50
50
 
51
51
  # Params of the initializer along with corresponding readers
52
52
  param :name, proc(&:to_s)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "dry-initializer"
3
- gem.version = "2.1.0"
3
+ gem.version = "2.2.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,7 +11,7 @@ module Dry::Initializer::Builders
11
11
 
12
12
  private
13
13
 
14
- # rubocop: disable Style/MethodLength
14
+ # rubocop: disable Metrics/MethodLength
15
15
  def initialize(definition)
16
16
  @definition = definition
17
17
  @option = definition.option
@@ -26,7 +26,7 @@ module Dry::Initializer::Builders
26
26
  @item = "__dry_initializer_definition__"
27
27
  @val = @option ? "__dry_initializer_value__" : @source
28
28
  end
29
- # rubocop: enable Style/MethodLength
29
+ # rubocop: enable Metrics/MethodLength
30
30
 
31
31
  def lines
32
32
  [
@@ -111,6 +111,18 @@ module Dry::Initializer
111
111
  self
112
112
  end
113
113
 
114
+ # Human-readable representation of configured params and options
115
+ # @return [String]
116
+ def inch
117
+ line = Builders::Signature[self]
118
+ line = line.gsub("__dry_initializer_options__", "options")
119
+ lines = ["@!method initialize(#{line})"]
120
+ lines += ["Initializes an instance of #{extended_class}"]
121
+ lines += definitions.values.map(&:inch)
122
+ lines += ["@return [#{extended_class}]"]
123
+ lines.join("\n")
124
+ end
125
+
114
126
  private
115
127
 
116
128
  def initialize(extended_class = nil, null: UNDEFINED)
@@ -9,7 +9,8 @@ module Dry::Initializer
9
9
  #
10
10
  class Definition
11
11
  attr_reader :option, :null, :source, :target, :ivar,
12
- :type, :optional, :default, :reader
12
+ :type, :optional, :default, :reader,
13
+ :desc
13
14
 
14
15
  def options
15
16
  {
@@ -17,7 +18,8 @@ module Dry::Initializer
17
18
  type: type,
18
19
  optional: optional,
19
20
  default: default,
20
- reader: reader
21
+ reader: reader,
22
+ desc: desc
21
23
  }.reject { |_, value| value.nil? }
22
24
  end
23
25
 
@@ -36,6 +38,15 @@ module Dry::Initializer
36
38
  Builders::Reader[self]
37
39
  end
38
40
 
41
+ def inch
42
+ @inch ||= (option ? "@option" : "@param ").tap do |text|
43
+ text << " [Object]"
44
+ text << (option ? " :#{source}" : " #{source}")
45
+ text << (optional ? " (optional)" : " (required)")
46
+ text << " #{desc}" if desc
47
+ end
48
+ end
49
+
39
50
  private
40
51
 
41
52
  def initialize(option, null, source, coercer = nil, **options)
@@ -48,6 +59,7 @@ module Dry::Initializer
48
59
  @reader = prepare_reader options.fetch(:reader, true)
49
60
  @default = check_default options[:default]
50
61
  @optional = options.fetch(:optional, @default)
62
+ @desc = options[:desc]&.to_s&.capitalize
51
63
  end
52
64
 
53
65
  def check_source(value)
@@ -5,7 +5,7 @@ describe Dry::Initializer, ".dry_initializer.public_attributes" do
5
5
  before do
6
6
  class Test::Foo
7
7
  extend Dry::Initializer
8
- param :foo, proc(&:to_s)
8
+ param :foo, proc(&:to_s), desc: "a weird parameter"
9
9
  option :moo, optional: true
10
10
  option :bar, default: proc { 1 }, reader: false
11
11
  option :baz, optional: true, reader: :protected
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.1.0
4
+ version: 2.2.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-09-11 00:00:00.000000000 Z
12
+ date: 2017-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec