dry-behaviour 0.5.2 → 0.6.0

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