dry-matcher 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +13 -9
- data/Gemfile +1 -1
- data/lib/dry/matcher.rb +5 -5
- data/lib/dry/matcher/either_matcher.rb +2 -69
- data/lib/dry/matcher/result_matcher.rb +74 -0
- data/lib/dry/matcher/version.rb +1 -1
- data/spec/examples.txt +16 -16
- data/spec/integration/class_enhancement_spec.rb +5 -5
- data/spec/integration/matcher_spec.rb +7 -7
- data/spec/integration/{either_matcher_spec.rb → result_matcher_spec.rb} +6 -6
- data/spec/unit/case_spec.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a452c874d6095df3fd8a932dfc0a604fa2ef531dff6ca30ee2c850f1012ce13c
|
4
|
+
data.tar.gz: 8a061065d80d1821fdb4e9b020050cd380ee69a73af6351bbc78bfeab5153911
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8af536933244d441747638bcf7244f1918c4cb626717d48be1087704628f0c3b09266e6b55917fd18b776a464eaae4fc25e8382e22b661d3f408dc99c69c93bf
|
7
|
+
data.tar.gz: 5ca949c319b53001db633bdf6493eb2f99ab27bea4171b3429523991f9c3063ef5edceb3a5ee068ec75f9af5269f0795d7d09d1b03437d57cbdfee2e6fd8e8b3
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# 0.7.0 / to-be-released
|
2
|
+
|
3
|
+
## Changed
|
4
|
+
|
5
|
+
- `EitherMatcher` was renamed to `ResultMatcher` according to match the rename of `Either` to `Result` in dry-monads 0.4.0. The previous name is still there for backward compatibility, we'll deprecate and drop it in furure releases (flash-gordon in [#13](https://github.com/dry-rb/dry-matcher/pull/13))
|
6
|
+
|
7
|
+
[Compare v0.6.0...v0.7.0](https://github.com/dry-rb/dry-matcher/compare/v0.6.0...v0.7.0)
|
8
|
+
|
1
9
|
# 0.6.0 / 2016-12-19
|
2
10
|
|
3
11
|
## Added
|
@@ -9,15 +17,11 @@
|
|
9
17
|
- Matches must now be exhaustive - when matching against a value, at least one match block must be provided for each of a matcher's cases (timriley in [#7](https://github.com/dry-rb/dry-matcher/pull/7))
|
10
18
|
- `Dry::Matcher::Case` objects can now be created without a `resolve:` proc. In this case, a default will be provided that passes the result value through (timriley in [#9](https://github.com/dry-rb/dry-matcher/pull/9))
|
11
19
|
|
12
|
-
[Compare v0.5.1...v0.6.0](https://github.com/dry-rb/dry-result_matcher/compare/v0.5.1...v0.6.0)
|
13
|
-
|
14
|
-
# 0.5.1 / 2016-07-06
|
15
|
-
|
16
20
|
## Fixed
|
17
21
|
|
18
22
|
- Fixed handling of calls to non-existent cases within a matcher block (timriley)
|
19
23
|
|
20
|
-
[Compare v0.5.0...v0.
|
24
|
+
[Compare v0.5.0...v0.6.0](https://github.com/dry-rb/dry-matcher/compare/v0.5.0...v0.6.0)
|
21
25
|
|
22
26
|
# 0.5.0 / 2016-06-30
|
23
27
|
|
@@ -80,7 +84,7 @@
|
|
80
84
|
```
|
81
85
|
- The previous `Dry::ResultMatcher.match` behaviour (for matching `Either` monads) has been moved to `Dry::Matcher::EitherMatcher.call`
|
82
86
|
|
83
|
-
[Compare v0.4.0...v0.5.0](https://github.com/dry-rb/dry-
|
87
|
+
[Compare v0.4.0...v0.5.0](https://github.com/dry-rb/dry-matcher/compare/v0.4.0...v0.5.0)
|
84
88
|
|
85
89
|
# 0.4.0 / 2016-06-08
|
86
90
|
|
@@ -92,7 +96,7 @@
|
|
92
96
|
|
93
97
|
* Expect monads from [dry-monads](https://github.com/dry-rb/dry-monads) instead of [Kleisli](https://github.com/txus/kleisli) (ttdonovan)
|
94
98
|
|
95
|
-
[Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-
|
99
|
+
[Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-matcher/compare/v0.3.0...v0.4.0)
|
96
100
|
|
97
101
|
# 0.3.0 / 2016-03-23
|
98
102
|
|
@@ -100,7 +104,7 @@
|
|
100
104
|
|
101
105
|
* Renamed to `dry-result_matcher`. Match results using `Dry::ResultMatcher.match` or extend your own classes with `Dry::ResultMatcher.for`.
|
102
106
|
|
103
|
-
[Compare v0.2.0...v0.3.0](https://github.com/dry-rb/dry-
|
107
|
+
[Compare v0.2.0...v0.3.0](https://github.com/dry-rb/dry-matcher/compare/v0.2.0...v0.3.0)
|
104
108
|
|
105
109
|
# 0.2.0 / 2016-02-10
|
106
110
|
|
@@ -108,7 +112,7 @@
|
|
108
112
|
|
109
113
|
* Added `EitherResultMatcher.for(*methods)` to return a module wrapping the specified methods (returning an `Either`) with the match block API. Example usage, in a class with a `#call` method: `include EitherResultMatcher.for(:call)`.
|
110
114
|
|
111
|
-
[Compare v0.1.0...v0.22.0](https://github.com/dry-rb/dry-
|
115
|
+
[Compare v0.1.0...v0.22.0](https://github.com/dry-rb/dry-matcher/compare/v0.1.0...v0.2.0)
|
112
116
|
|
113
117
|
# 0.1.0 / 2015-12-03
|
114
118
|
|
data/Gemfile
CHANGED
data/lib/dry/matcher.rb
CHANGED
@@ -13,10 +13,10 @@ module Dry
|
|
13
13
|
#
|
14
14
|
# @example Usage with `dry-monads`
|
15
15
|
# class MonadicOperation
|
16
|
-
# include Dry::Matcher.for(:call, with: Dry::Matcher::
|
16
|
+
# include Dry::Matcher.for(:call, with: Dry::Matcher::ResultMatcher)
|
17
17
|
#
|
18
18
|
# def call
|
19
|
-
# Dry::Monads::
|
19
|
+
# Dry::Monads::Result::Success.new('Success')
|
20
20
|
# end
|
21
21
|
# end
|
22
22
|
#
|
@@ -71,11 +71,11 @@ module Dry
|
|
71
71
|
#
|
72
72
|
# @example Usage with `dry-monads`
|
73
73
|
# require 'dry-monads'
|
74
|
-
# require 'dry/matcher/
|
74
|
+
# require 'dry/matcher/result_matcher'
|
75
75
|
#
|
76
|
-
# value = Dry::Monads::
|
76
|
+
# value = Dry::Monads::Result::Failure.new('failure!')
|
77
77
|
#
|
78
|
-
# Dry::Matcher::
|
78
|
+
# Dry::Matcher::ResultMatcher.(value) do |m|
|
79
79
|
# m.success { |v| "Yay: #{v}" }
|
80
80
|
# m.failure { |v| "Boo: #{v}" }
|
81
81
|
# end #=> "Boo: failure!"
|
@@ -1,74 +1,7 @@
|
|
1
|
-
require "dry/matcher"
|
1
|
+
require "dry/matcher/result_matcher"
|
2
2
|
|
3
3
|
module Dry
|
4
4
|
class Matcher
|
5
|
-
|
6
|
-
# [dry-monads](/gems/dry-monads) or any other compatible gems.
|
7
|
-
#
|
8
|
-
# Provides {Case}s for two matchers:
|
9
|
-
# * `:success` matches `Dry::Monads::Either::Right`
|
10
|
-
# and `Dry::Monads::Try::Success` (or any other monad that responds to
|
11
|
-
# `#to_either` returning either monad that is `#right?`)
|
12
|
-
# * `:failure` matches `Dry::Monads::Either::Left` and
|
13
|
-
# `Dry::Monads::Try::Failure` (or any other monad that responds to
|
14
|
-
# `#to_either` returning either monad that is `#left?`)
|
15
|
-
#
|
16
|
-
# @return [Dry::Matcher]
|
17
|
-
#
|
18
|
-
# @example Usage with `dry-monads`
|
19
|
-
# require 'dry-monads'
|
20
|
-
# require 'dry/matcher/either_matcher'
|
21
|
-
#
|
22
|
-
# value = Dry::Monads::Either::Right.new('success!')
|
23
|
-
#
|
24
|
-
# Dry::Matcher::EitherMatcher.(value) do |m|
|
25
|
-
# m.success do |v|
|
26
|
-
# "Yay: #{v}"
|
27
|
-
# end
|
28
|
-
#
|
29
|
-
# m.failure do |v|
|
30
|
-
# "Boo: #{v}"
|
31
|
-
# end
|
32
|
-
# end #=> "Yay: success!"
|
33
|
-
#
|
34
|
-
# @example Usage with custom monad
|
35
|
-
# require 'dry/matcher/either_matcher'
|
36
|
-
#
|
37
|
-
# class CustomBooleanMonad
|
38
|
-
# def initialize(value); @value = value; end
|
39
|
-
# attr_reader :value
|
40
|
-
# alias_method :right?, :value
|
41
|
-
# def left?; !right?; end
|
42
|
-
# def to_either; self; end
|
43
|
-
# end
|
44
|
-
#
|
45
|
-
# value = CustomBooleanMonad.new(nil)
|
46
|
-
#
|
47
|
-
# Dry::Matcher::EitherMatcher.(value) do |m|
|
48
|
-
# m.success { |v| "#{v.inspect} is truthy" }
|
49
|
-
# m.failure { |v| "#{v.inspect} is falsey" }
|
50
|
-
# end # => "nil is falsey"
|
51
|
-
EitherMatcher = Dry::Matcher.new(
|
52
|
-
success: Case.new(
|
53
|
-
match: -> result, *pattern {
|
54
|
-
result = result.to_either
|
55
|
-
result.right?
|
56
|
-
},
|
57
|
-
resolve: -> result {
|
58
|
-
result = result.to_either
|
59
|
-
result.value
|
60
|
-
},
|
61
|
-
),
|
62
|
-
failure: Case.new(
|
63
|
-
match: -> result, *pattern {
|
64
|
-
result = result.to_either
|
65
|
-
result.left?
|
66
|
-
},
|
67
|
-
resolve: -> result {
|
68
|
-
result = result.to_either
|
69
|
-
result.value
|
70
|
-
},
|
71
|
-
)
|
72
|
-
)
|
5
|
+
EitherMatcher = ResultMatcher
|
73
6
|
end
|
74
7
|
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require "dry/matcher"
|
2
|
+
|
3
|
+
module Dry
|
4
|
+
class Matcher
|
5
|
+
# Built-in {Matcher} ready to use with `Result` or `Try` monads from
|
6
|
+
# [dry-monads](/gems/dry-monads) or any other compatible gems.
|
7
|
+
#
|
8
|
+
# Provides {Case}s for two matchers:
|
9
|
+
# * `:success` matches `Dry::Monads::Result::Success`
|
10
|
+
# and `Dry::Monads::Try::Value` (or any other monad that responds to
|
11
|
+
# `#to_result` returning result monad that is `#success?`)
|
12
|
+
# * `:failure` matches `Dry::Monads::Result::Failure` and
|
13
|
+
# `Dry::Monads::Try::Error` (or any other monad that responds to
|
14
|
+
# `#to_result` returning result monad that is `#failure?`)
|
15
|
+
#
|
16
|
+
# @return [Dry::Matcher]
|
17
|
+
#
|
18
|
+
# @example Usage with `dry-monads`
|
19
|
+
# require 'dry-monads'
|
20
|
+
# require 'dry/matcher/result_matcher'
|
21
|
+
#
|
22
|
+
# value = Dry::Monads::Result::Success.new('success!')
|
23
|
+
#
|
24
|
+
# Dry::Matcher::ResultMatcher.(value) do |m|
|
25
|
+
# m.success do |v|
|
26
|
+
# "Yay: #{v}"
|
27
|
+
# end
|
28
|
+
#
|
29
|
+
# m.failure do |v|
|
30
|
+
# "Boo: #{v}"
|
31
|
+
# end
|
32
|
+
# end #=> "Yay: success!"
|
33
|
+
#
|
34
|
+
# @example Usage with custom monad
|
35
|
+
# require 'dry/matcher/result_matcher'
|
36
|
+
#
|
37
|
+
# class CustomBooleanMonad
|
38
|
+
# def initialize(value); @value = value; end
|
39
|
+
# attr_reader :value
|
40
|
+
# alias_method :success?, :value
|
41
|
+
# def failure?; !success?; end
|
42
|
+
# def to_result; self; end
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
# value = CustomBooleanMonad.new(nil)
|
46
|
+
#
|
47
|
+
# Dry::Matcher::ResultMatcher.(value) do |m|
|
48
|
+
# m.success { |v| "#{v.inspect} is truthy" }
|
49
|
+
# m.failure { |v| "#{v.inspect} is falsey" }
|
50
|
+
# end # => "nil is falsey"
|
51
|
+
ResultMatcher = Dry::Matcher.new(
|
52
|
+
success: Case.new(
|
53
|
+
match: -> result, *pattern {
|
54
|
+
result = result.to_result
|
55
|
+
result.success?
|
56
|
+
},
|
57
|
+
resolve: -> result {
|
58
|
+
result = result.to_result
|
59
|
+
result.value!
|
60
|
+
},
|
61
|
+
),
|
62
|
+
failure: Case.new(
|
63
|
+
match: -> result, *pattern {
|
64
|
+
result = result.to_result
|
65
|
+
result.failure?
|
66
|
+
},
|
67
|
+
resolve: -> result {
|
68
|
+
result = result.to_result
|
69
|
+
result.failure
|
70
|
+
},
|
71
|
+
)
|
72
|
+
)
|
73
|
+
end
|
74
|
+
end
|
data/lib/dry/matcher/version.rb
CHANGED
data/spec/examples.txt
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
----------------------------------------------------- | ------ | --------------- |
|
3
|
-
./spec/integration/class_enhancement_spec.rb[1:1:1:1] | passed | 0.
|
4
|
-
./spec/integration/class_enhancement_spec.rb[1:1:2:1] | passed | 0.
|
5
|
-
./spec/integration/class_enhancement_spec.rb[1:2:1:1] | passed | 0.
|
6
|
-
./spec/integration/class_enhancement_spec.rb[1:2:2:1] | passed | 0.
|
7
|
-
./spec/integration/
|
8
|
-
./spec/integration/
|
9
|
-
./spec/integration/
|
10
|
-
./spec/integration/
|
11
|
-
./spec/integration/matcher_spec.rb[1:1:
|
12
|
-
./spec/integration/
|
13
|
-
./spec/integration/
|
14
|
-
./spec/integration/
|
15
|
-
./spec/integration/
|
16
|
-
./spec/unit/case_spec.rb[1:1:1] | passed | 0.
|
17
|
-
./spec/unit/case_spec.rb[1:2:1] | passed | 0.
|
18
|
-
./spec/unit/case_spec.rb[1:2:2] | passed | 0.
|
3
|
+
./spec/integration/class_enhancement_spec.rb[1:1:1:1] | passed | 0.00011 seconds |
|
4
|
+
./spec/integration/class_enhancement_spec.rb[1:1:2:1] | passed | 0.0001 seconds |
|
5
|
+
./spec/integration/class_enhancement_spec.rb[1:2:1:1] | passed | 0.00014 seconds |
|
6
|
+
./spec/integration/class_enhancement_spec.rb[1:2:2:1] | passed | 0.0001 seconds |
|
7
|
+
./spec/integration/matcher_spec.rb[1:1:1] | passed | 0.00017 seconds |
|
8
|
+
./spec/integration/matcher_spec.rb[1:1:2] | passed | 0.0001 seconds |
|
9
|
+
./spec/integration/matcher_spec.rb[1:1:3] | passed | 0.00122 seconds |
|
10
|
+
./spec/integration/matcher_spec.rb[1:1:4:1] | passed | 0.00009 seconds |
|
11
|
+
./spec/integration/matcher_spec.rb[1:1:4:2] | passed | 0.00147 seconds |
|
12
|
+
./spec/integration/result_matcher_spec.rb[1:1:1:1] | passed | 0.00012 seconds |
|
13
|
+
./spec/integration/result_matcher_spec.rb[1:1:2:1] | passed | 0.00008 seconds |
|
14
|
+
./spec/integration/result_matcher_spec.rb[1:1:3:1:1] | passed | 0.00015 seconds |
|
15
|
+
./spec/integration/result_matcher_spec.rb[1:1:3:2:1] | passed | 0.00017 seconds |
|
16
|
+
./spec/unit/case_spec.rb[1:1:1] | passed | 0.00087 seconds |
|
17
|
+
./spec/unit/case_spec.rb[1:2:1] | passed | 0.00008 seconds |
|
18
|
+
./spec/unit/case_spec.rb[1:2:2] | passed | 0.00056 seconds |
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require "dry-monads"
|
2
|
-
require "dry/matcher/
|
2
|
+
require "dry/matcher/result_matcher"
|
3
3
|
|
4
4
|
RSpec.describe "Class enhancement with Dry::Matcher.for" do
|
5
5
|
let(:operation) {
|
6
6
|
Class.new do
|
7
|
-
include Dry::Matcher.for(:call, with: Dry::Matcher::
|
7
|
+
include Dry::Matcher.for(:call, with: Dry::Matcher::ResultMatcher)
|
8
8
|
|
9
9
|
def call(bool)
|
10
|
-
bool ? Dry::Monads::
|
10
|
+
bool ? Dry::Monads::Success("a success") : Dry::Monads::Failure("a failure")
|
11
11
|
end
|
12
12
|
end.new
|
13
13
|
}
|
@@ -49,7 +49,7 @@ RSpec.describe "Class enhancement with Dry::Matcher.for" do
|
|
49
49
|
let(:input) { true }
|
50
50
|
|
51
51
|
it "returns the result" do
|
52
|
-
expect(result).to eq Dry::Monads::
|
52
|
+
expect(result).to eq Dry::Monads::Success("a success")
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -57,7 +57,7 @@ RSpec.describe "Class enhancement with Dry::Matcher.for" do
|
|
57
57
|
let(:input) { false }
|
58
58
|
|
59
59
|
it "returns the result" do
|
60
|
-
expect(result).to eq Dry::Monads::
|
60
|
+
expect(result).to eq Dry::Monads::Failure("a failure")
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -4,15 +4,15 @@ RSpec.describe Dry::Matcher do
|
|
4
4
|
context "with match cases provided" do
|
5
5
|
let(:success_case) {
|
6
6
|
Dry::Matcher::Case.new(
|
7
|
-
match: -> result { result.
|
8
|
-
resolve: -> result { result.value },
|
7
|
+
match: -> result { result.success? },
|
8
|
+
resolve: -> result { result.value! },
|
9
9
|
)
|
10
10
|
}
|
11
11
|
|
12
12
|
let(:failure_case) {
|
13
13
|
Dry::Matcher::Case.new(
|
14
|
-
match: -> result { result.
|
15
|
-
resolve: -> result { result.
|
14
|
+
match: -> result { result.failure? },
|
15
|
+
resolve: -> result { result.failure },
|
16
16
|
)
|
17
17
|
}
|
18
18
|
|
@@ -36,17 +36,17 @@ RSpec.describe Dry::Matcher do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
it "matches on success" do
|
39
|
-
input = Dry::Monads::
|
39
|
+
input = Dry::Monads::Success("Yes!")
|
40
40
|
expect(call_match(input)).to eq "Success: Yes!"
|
41
41
|
end
|
42
42
|
|
43
43
|
it "matches on failure" do
|
44
|
-
input = Dry::Monads::
|
44
|
+
input = Dry::Monads::Failure("No!")
|
45
45
|
expect(call_match(input)).to eq "Failure: No!"
|
46
46
|
end
|
47
47
|
|
48
48
|
it "requires an exhaustive match" do
|
49
|
-
input = Dry::Monads::
|
49
|
+
input = Dry::Monads::Success("Yes!")
|
50
50
|
|
51
51
|
expect {
|
52
52
|
matcher.(input) do |m|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require "dry-monads"
|
2
|
-
require "dry/matcher/
|
2
|
+
require "dry/matcher/result_matcher"
|
3
3
|
|
4
|
-
RSpec.describe "Dry::Matcher::
|
4
|
+
RSpec.describe "Dry::Matcher::ResultMatcher" do
|
5
5
|
describe "external matching" do
|
6
6
|
subject(:match) {
|
7
|
-
Dry::Matcher::
|
7
|
+
Dry::Matcher::ResultMatcher.(result) do |m|
|
8
8
|
m.success do |v|
|
9
9
|
"Matched success: #{v}"
|
10
10
|
end
|
@@ -16,7 +16,7 @@ RSpec.describe "Dry::Matcher::EitherMatcher" do
|
|
16
16
|
}
|
17
17
|
|
18
18
|
context "successful result" do
|
19
|
-
let(:result) { Dry::Monads::
|
19
|
+
let(:result) { Dry::Monads::Success("a success") }
|
20
20
|
|
21
21
|
it "matches on success" do
|
22
22
|
expect(match).to eq "Matched success: a success"
|
@@ -24,14 +24,14 @@ RSpec.describe "Dry::Matcher::EitherMatcher" do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
context "failed result" do
|
27
|
-
let(:result) { Dry::Monads::
|
27
|
+
let(:result) { Dry::Monads::Failure("a failure") }
|
28
28
|
|
29
29
|
it "matches on failure" do
|
30
30
|
expect(match).to eq "Matched failure: a failure"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
context "result convertible to
|
34
|
+
context "result convertible to result" do
|
35
35
|
context "converts to success" do
|
36
36
|
let(:result) {
|
37
37
|
Dry::Monads::Try.lift([StandardError], -> { 'a success' })
|
data/spec/unit/case_spec.rb
CHANGED
@@ -9,7 +9,7 @@ RSpec.describe Dry::Matcher::Case do
|
|
9
9
|
|
10
10
|
describe "#resolve" do
|
11
11
|
it "calls the resolve proc with the value" do
|
12
|
-
kase = described_class.new(match: -> * { true }, resolve:
|
12
|
+
kase = described_class.new(match: -> * { true }, resolve: -> value { value.to_s })
|
13
13
|
|
14
14
|
expect(kase.resolve(123)).to eq "123"
|
15
15
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-matcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Riley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -97,11 +97,12 @@ files:
|
|
97
97
|
- lib/dry/matcher/case.rb
|
98
98
|
- lib/dry/matcher/either_matcher.rb
|
99
99
|
- lib/dry/matcher/evaluator.rb
|
100
|
+
- lib/dry/matcher/result_matcher.rb
|
100
101
|
- lib/dry/matcher/version.rb
|
101
102
|
- spec/examples.txt
|
102
103
|
- spec/integration/class_enhancement_spec.rb
|
103
|
-
- spec/integration/either_matcher_spec.rb
|
104
104
|
- spec/integration/matcher_spec.rb
|
105
|
+
- spec/integration/result_matcher_spec.rb
|
105
106
|
- spec/spec_helper.rb
|
106
107
|
- spec/unit/case_spec.rb
|
107
108
|
homepage: http://dry-rb.org/gems/dry-matcher
|
@@ -116,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
117
|
requirements:
|
117
118
|
- - ">="
|
118
119
|
- !ruby/object:Gem::Version
|
119
|
-
version: 2.
|
120
|
+
version: 2.2.0
|
120
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
122
|
requirements:
|
122
123
|
- - ">="
|
@@ -124,9 +125,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
125
|
version: '0'
|
125
126
|
requirements: []
|
126
127
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.7.3
|
128
129
|
signing_key:
|
129
130
|
specification_version: 4
|
130
131
|
summary: Flexible, expressive pattern matching for Ruby
|
131
132
|
test_files: []
|
132
|
-
has_rdoc:
|