dry-behaviour 0.5.2 → 0.6.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: b63af0a4bfeeee5f7099be50a779df4069bc2c95
4
- data.tar.gz: 625198267fdbf9c93fcbc07b8af147bf3caca3c9
3
+ metadata.gz: 01a2f3844b89e2b41e719f309945c2c66d7717ff
4
+ data.tar.gz: 6497f54746f681a0b0a281a8c0404b7b55bb8fad
5
5
  SHA512:
6
- metadata.gz: 9b49e0be4ccd66af8a49f5f144439656546b52263898d19f74dfeb5b991368debef213dab39bf405dad26035c577bf34e65f46745d40236a7f98d1adae6ccc79
7
- data.tar.gz: 5ccfe1f32197227808d4358a1d7044fdcbdcdb586ecb232fda2ac025b52d1abf05f9291031e08df547cc69c76fcfe1fd0508e2430eb344bfc3c680bb23cd956c
6
+ metadata.gz: 22ebe373dd9ec2b4b30babcd3c8f3130f5ae9f229a8f152ffe9eaaf4291cc0cd7ec2f2d1850ed1c8e89b4a956765244330ad992df8039320abb114049118be75
7
+ data.tar.gz: 4ddc32d58f0f52ca11496945df99342d1238b1e78636d5d5668d44ed56a225e37e96fa22cbbd236b25d3d4ec8ca4a71f7a44e7924cdb9af32d2982896cf7b9dd
data/README.md CHANGED
@@ -100,6 +100,10 @@ end
100
100
 
101
101
  ## Changelog
102
102
 
103
+ ### `0.6.0` :: Bugfix
104
+
105
+ - Implementation for classes responding to **`to_a`** is handled properly
106
+
103
107
  ### `0.5.0` :: Guards
104
108
 
105
109
  ### `0.4.2` :: Removed the forgotten debug output :(
data/bin/benchmark ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'dry/behaviour'
4
+ require_relative '../spec/benchmark/guarded'
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'bundler', '~> 1.10'
29
29
  spec.add_development_dependency 'awesome_print', '~> 1.7'
30
30
  spec.add_development_dependency 'rake', '~> 10.0'
31
+ spec.add_development_dependency 'benchmark-ips', '~> 2.7'
31
32
  spec.add_development_dependency 'rspec'
32
33
  spec.add_development_dependency 'pry'
33
34
  end
@@ -89,7 +89,8 @@ module Dry
89
89
  acc << m
90
90
  end
91
91
  end.each do |m|
92
- [*target].each do |tgt|
92
+ target = [target] unless target.is_a?(Array)
93
+ target.each do |tgt|
93
94
  BlackTie.implementations[protocol][tgt][m] = mod.method(m).to_proc
94
95
  end
95
96
  end
@@ -82,6 +82,10 @@ module Dry
82
82
  end
83
83
  end
84
84
 
85
+ # rubocop:disable Metrics/MethodLength
86
+ # rubocop:disable Metrics/CyclomaticComplexity
87
+ # rubocop:disable Metrics/PerceivedComplexity
88
+ # rubocop:disable Style/AsciiComments
85
89
  def umbrella(guarded, name, clauses)
86
90
  guarded.prepend(Module.new do
87
91
  define_method name do |*args, **params, &cb|
@@ -93,14 +97,16 @@ module Dry
93
97
  end
94
98
  next if hash.nil?
95
99
  hash.all? do |param, condition|
96
- type_var, idx = m.parameters.each_with_index.detect { |(_type, var), idx| var == param }
100
+ type_var, idx = m.parameters.each_with_index.detect { |(_type, var), _i| var == param }
97
101
  # rubocop:disable Style/CaseEquality
98
- # rubocop:disable Style/RescueModifier
99
- idx && (case type_var.first
100
- when :req, :opt then condition === args[idx] rescue false
101
- when :block then condition === cb
102
- end)
103
- # rubocop:enable Style/RescueModifier
102
+ idx && begin
103
+ case type_var.first
104
+ when :req, :opt then condition === args[idx]
105
+ when :block then condition === cb
106
+ end
107
+ rescue => _e
108
+ false # we don’t care
109
+ end
104
110
  # rubocop:enable Style/CaseEquality
105
111
  end
106
112
  end
@@ -109,6 +115,10 @@ module Dry
109
115
  end
110
116
  end)
111
117
  end
118
+ # rubocop:enable Style/AsciiComments
119
+ # rubocop:enable Metrics/PerceivedComplexity
120
+ # rubocop:enable Metrics/CyclomaticComplexity
121
+ # rubocop:enable Metrics/MethodLength
112
122
  end
113
123
  private_constant :H
114
124
  end
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  module Behaviour
3
- VERSION = '0.5.2'.freeze
3
+ VERSION = '0.6.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-behaviour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksei Matiushkin
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-04-12 00:00:00.000000000 Z
13
+ date: 2018-02-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -54,6 +54,20 @@ dependencies:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '10.0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: benchmark-ips
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '2.7'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '2.7'
57
71
  - !ruby/object:Gem::Dependency
58
72
  name: rspec
59
73
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +115,7 @@ files:
101
115
  - LICENSE.txt
102
116
  - README.md
103
117
  - Rakefile
118
+ - bin/benchmark
104
119
  - bin/console
105
120
  - bin/setup
106
121
  - dry-behaviour.gemspec