dry-matcher 0.6.0 → 0.7.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 +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:
|