fear 0.11.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +0 -1
- data/.rubocop.yml +18 -0
- data/.travis.yml +0 -3
- data/CHANGELOG.md +12 -1
- data/Gemfile +1 -0
- data/{gemfiles/dry_equalizer_0.2.1.gemfile.lock → Gemfile.lock} +21 -12
- data/README.md +594 -241
- data/Rakefile +166 -219
- data/benchmarks/README.md +1 -0
- data/benchmarks/dry_do_vs_fear_for.txt +11 -0
- data/benchmarks/dry_some_fmap_vs_fear_some_map.txt +11 -0
- data/benchmarks/factorial.txt +16 -0
- data/benchmarks/fear_gaurd_and1_vs_new.txt +13 -0
- data/benchmarks/fear_gaurd_and2_vs_and.txt +13 -0
- data/benchmarks/fear_gaurd_and3_vs_and_and.txt +13 -0
- data/benchmarks/fear_pattern_extracting_with_vs_without_cache.txt +11 -0
- data/benchmarks/fear_pattern_matching_construction_vs_execution.txt +13 -0
- data/benchmarks/pattern_matching_dry_vs_qo_vs_fear_try.txt +14 -0
- data/benchmarks/pattern_matching_qo_vs_fear_pattern_extraction.txt +11 -0
- data/benchmarks/pattern_matching_qo_vs_fear_try_execution.txt +11 -0
- data/examples/pattern_extracting.rb +15 -0
- data/examples/pattern_matching_binary_tree_set.rb +96 -0
- data/examples/pattern_matching_number_in_words.rb +54 -0
- data/fear.gemspec +4 -2
- data/lib/fear.rb +21 -4
- data/lib/fear/either.rb +77 -59
- data/lib/fear/either_api.rb +21 -0
- data/lib/fear/empty_partial_function.rb +1 -1
- data/lib/fear/extractor.rb +108 -0
- data/lib/fear/extractor/anonymous_array_splat_matcher.rb +8 -0
- data/lib/fear/extractor/any_matcher.rb +15 -0
- data/lib/fear/extractor/array_head_matcher.rb +34 -0
- data/lib/fear/extractor/array_matcher.rb +38 -0
- data/lib/fear/extractor/array_splat_matcher.rb +14 -0
- data/lib/fear/extractor/empty_list_matcher.rb +18 -0
- data/lib/fear/extractor/extractor_matcher.rb +42 -0
- data/lib/fear/extractor/grammar.rb +201 -0
- data/lib/fear/extractor/grammar.treetop +129 -0
- data/lib/fear/extractor/identifier_matcher.rb +16 -0
- data/lib/fear/extractor/matcher.rb +54 -0
- data/lib/fear/extractor/matcher/and.rb +36 -0
- data/lib/fear/extractor/named_array_splat_matcher.rb +15 -0
- data/lib/fear/extractor/pattern.rb +55 -0
- data/lib/fear/extractor/typed_identifier_matcher.rb +24 -0
- data/lib/fear/extractor/value_matcher.rb +17 -0
- data/lib/fear/extractor_api.rb +33 -0
- data/lib/fear/failure.rb +32 -10
- data/lib/fear/for.rb +14 -69
- data/lib/fear/for_api.rb +66 -0
- data/lib/fear/future.rb +414 -0
- data/lib/fear/future_api.rb +19 -0
- data/lib/fear/left.rb +8 -0
- data/lib/fear/none.rb +17 -8
- data/lib/fear/option.rb +55 -49
- data/lib/fear/option_api.rb +38 -0
- data/lib/fear/partial_function.rb +9 -12
- data/lib/fear/partial_function/empty.rb +1 -1
- data/lib/fear/partial_function/guard.rb +8 -20
- data/lib/fear/partial_function/lifted.rb +1 -0
- data/lib/fear/partial_function_class.rb +10 -0
- data/lib/fear/pattern_match.rb +10 -0
- data/lib/fear/pattern_matching_api.rb +35 -11
- data/lib/fear/promise.rb +87 -0
- data/lib/fear/right.rb +8 -0
- data/lib/fear/some.rb +22 -3
- data/lib/fear/success.rb +22 -1
- data/lib/fear/try.rb +82 -67
- data/lib/fear/try_api.rb +31 -0
- data/lib/fear/unit.rb +28 -0
- data/lib/fear/version.rb +1 -1
- data/spec/fear/done_spec.rb +3 -3
- data/spec/fear/either/mixin_spec.rb +15 -0
- data/spec/fear/either_pattern_match_spec.rb +10 -12
- data/spec/fear/extractor/array_matcher_spec.rb +228 -0
- data/spec/fear/extractor/extractor_matcher_spec.rb +151 -0
- data/spec/fear/extractor/grammar_array_spec.rb +23 -0
- data/spec/fear/extractor/identified_matcher_spec.rb +47 -0
- data/spec/fear/extractor/identifier_matcher_spec.rb +66 -0
- data/spec/fear/extractor/pattern_spec.rb +32 -0
- data/spec/fear/extractor/typed_identifier_matcher_spec.rb +62 -0
- data/spec/fear/extractor/value_matcher_number_spec.rb +77 -0
- data/spec/fear/extractor/value_matcher_string_spec.rb +86 -0
- data/spec/fear/extractor/value_matcher_symbol_spec.rb +69 -0
- data/spec/fear/extractor_api_spec.rb +113 -0
- data/spec/fear/extractor_spec.rb +59 -0
- data/spec/fear/failure_spec.rb +73 -13
- data/spec/fear/for_spec.rb +35 -35
- data/spec/fear/future_spec.rb +466 -0
- data/spec/fear/guard_spec.rb +4 -4
- data/spec/fear/left_spec.rb +40 -14
- data/spec/fear/none_spec.rb +28 -12
- data/spec/fear/option/mixin_spec.rb +37 -0
- data/spec/fear/option_pattern_match_spec.rb +7 -9
- data/spec/fear/partial_function_spec.rb +25 -3
- data/spec/fear/pattern_match_spec.rb +33 -1
- data/spec/fear/promise_spec.rb +94 -0
- data/spec/fear/right_spec.rb +37 -9
- data/spec/fear/some_spec.rb +32 -6
- data/spec/fear/success_spec.rb +32 -4
- data/spec/fear/try/mixin_spec.rb +17 -0
- data/spec/fear/try_pattern_match_spec.rb +8 -10
- data/spec/spec_helper.rb +1 -1
- metadata +115 -20
- data/Appraisals +0 -32
- data/gemfiles/dry_equalizer_0.1.0.gemfile +0 -8
- data/gemfiles/dry_equalizer_0.1.0.gemfile.lock +0 -82
- data/gemfiles/dry_equalizer_0.2.1.gemfile +0 -8
- data/lib/fear/done.rb +0 -22
- data/spec/fear/option_spec.rb +0 -15
data/spec/fear/right_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
RSpec.describe Fear::Right do
|
2
2
|
it_behaves_like Fear::RightBiased::Right do
|
3
|
-
let(:right) {
|
3
|
+
let(:right) { Fear.right('value') }
|
4
4
|
end
|
5
5
|
|
6
|
-
let(:right) {
|
6
|
+
let(:right) { Fear.right('value') }
|
7
7
|
|
8
8
|
describe '#right?' do
|
9
9
|
subject { right }
|
@@ -27,13 +27,13 @@ RSpec.describe Fear::Right do
|
|
27
27
|
context 'predicate evaluates to false and default is a proc' do
|
28
28
|
let(:predicate) { ->(v) { v != 'value' } }
|
29
29
|
let(:default) { -> { -1 } }
|
30
|
-
it { is_expected.to eq(
|
30
|
+
it { is_expected.to eq(Fear.left(-1)) }
|
31
31
|
end
|
32
32
|
|
33
33
|
context 'predicate evaluates to false and default is not a proc' do
|
34
34
|
let(:predicate) { ->(v) { v != 'value' } }
|
35
35
|
let(:default) { -1 }
|
36
|
-
it { is_expected.to eq(
|
36
|
+
it { is_expected.to eq(Fear.left(-1)) }
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -47,7 +47,7 @@ RSpec.describe Fear::Right do
|
|
47
47
|
|
48
48
|
context 'predicate evaluates to false' do
|
49
49
|
let(:predicate) { ->(v) { v != 'value' } }
|
50
|
-
it { is_expected.to eq(
|
50
|
+
it { is_expected.to eq(Fear.left('value')) }
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -56,7 +56,7 @@ RSpec.describe Fear::Right do
|
|
56
56
|
|
57
57
|
context 'predicate evaluates to true' do
|
58
58
|
let(:predicate) { ->(v) { v == 'value' } }
|
59
|
-
it { is_expected.to eq(
|
59
|
+
it { is_expected.to eq(Fear.left('value')) }
|
60
60
|
end
|
61
61
|
|
62
62
|
context 'predicate evaluates to false' do
|
@@ -67,7 +67,7 @@ RSpec.describe Fear::Right do
|
|
67
67
|
|
68
68
|
describe '#swap' do
|
69
69
|
subject { right.swap }
|
70
|
-
it { is_expected.to eq(
|
70
|
+
it { is_expected.to eq(Fear.left('value')) }
|
71
71
|
end
|
72
72
|
|
73
73
|
describe '#reduce' do
|
@@ -84,7 +84,7 @@ RSpec.describe Fear::Right do
|
|
84
84
|
describe '#join_right' do
|
85
85
|
context 'value is Either' do
|
86
86
|
subject { described_class.new(value).join_right }
|
87
|
-
let(:value) {
|
87
|
+
let(:value) { Fear.left('error') }
|
88
88
|
|
89
89
|
it 'returns value' do
|
90
90
|
is_expected.to eq(value)
|
@@ -103,7 +103,7 @@ RSpec.describe Fear::Right do
|
|
103
103
|
describe '#join_left' do
|
104
104
|
context 'value is Either' do
|
105
105
|
subject { either.join_left }
|
106
|
-
let(:either) { described_class.new(
|
106
|
+
let(:either) { described_class.new(Fear.left('error')) }
|
107
107
|
|
108
108
|
it { is_expected.to eq(either) }
|
109
109
|
end
|
@@ -152,4 +152,32 @@ RSpec.describe Fear::Right do
|
|
152
152
|
it { is_expected.to eq(:default) }
|
153
153
|
end
|
154
154
|
end
|
155
|
+
|
156
|
+
describe '#to_s' do
|
157
|
+
subject { right.to_s }
|
158
|
+
|
159
|
+
it { is_expected.to eq('#<Fear::Right value="value">') }
|
160
|
+
end
|
161
|
+
|
162
|
+
describe 'pattern matching' do
|
163
|
+
subject { Fear.xcase('Right(v : Integer)') { |v:| "matched #{v}" }.call_or_else(var) { 'nothing' } }
|
164
|
+
|
165
|
+
context 'right of int' do
|
166
|
+
let(:var) { Fear.right(42) }
|
167
|
+
|
168
|
+
it { is_expected.to eq('matched 42') }
|
169
|
+
end
|
170
|
+
|
171
|
+
context 'right of string' do
|
172
|
+
let(:var) { Fear.right('42') }
|
173
|
+
|
174
|
+
it { is_expected.to eq('nothing') }
|
175
|
+
end
|
176
|
+
|
177
|
+
context 'not right' do
|
178
|
+
let(:var) { '42' }
|
179
|
+
|
180
|
+
it { is_expected.to eq('nothing') }
|
181
|
+
end
|
182
|
+
end
|
155
183
|
end
|
data/spec/fear/some_spec.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
RSpec.describe Fear::Some do
|
2
|
-
include Fear::Option::Mixin
|
3
|
-
|
4
2
|
it_behaves_like Fear::RightBiased::Right do
|
5
|
-
let(:right) {
|
3
|
+
let(:right) { Fear.some('value') }
|
6
4
|
end
|
7
5
|
|
8
|
-
subject(:some) {
|
6
|
+
subject(:some) { Fear.some(42) }
|
9
7
|
|
10
8
|
describe '#select' do
|
11
9
|
subject { some.select(&predicate) }
|
@@ -17,7 +15,7 @@ RSpec.describe Fear::Some do
|
|
17
15
|
|
18
16
|
context 'predicate evaluates to false' do
|
19
17
|
let(:predicate) { ->(v) { v < 40 } }
|
20
|
-
it { is_expected.to eq(
|
18
|
+
it { is_expected.to eq(Fear.none) }
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
@@ -26,7 +24,7 @@ RSpec.describe Fear::Some do
|
|
26
24
|
|
27
25
|
context 'predicate evaluates to true' do
|
28
26
|
let(:predicate) { ->(v) { v > 40 } }
|
29
|
-
it { is_expected.to eq(
|
27
|
+
it { is_expected.to eq(Fear.none) }
|
30
28
|
end
|
31
29
|
|
32
30
|
context 'predicate evaluates to false' do
|
@@ -86,4 +84,32 @@ RSpec.describe Fear::Some do
|
|
86
84
|
it { is_expected.to eq(:default) }
|
87
85
|
end
|
88
86
|
end
|
87
|
+
|
88
|
+
describe '#to_s' do
|
89
|
+
subject { some.to_s }
|
90
|
+
|
91
|
+
it { is_expected.to eq('#<Fear::Some get=42>') }
|
92
|
+
end
|
93
|
+
|
94
|
+
describe 'pattern matching' do
|
95
|
+
subject { Fear.xcase('Some(v : Integer)') { |v:| "matched #{v}" }.call_or_else(var) { 'nothing' } }
|
96
|
+
|
97
|
+
context 'some of int' do
|
98
|
+
let(:var) { Fear.some(42) }
|
99
|
+
|
100
|
+
it { is_expected.to eq('matched 42') }
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'some of string' do
|
104
|
+
let(:var) { Fear.some('42') }
|
105
|
+
|
106
|
+
it { is_expected.to eq('nothing') }
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'not some' do
|
110
|
+
let(:var) { '42' }
|
111
|
+
|
112
|
+
it { is_expected.to eq('nothing') }
|
113
|
+
end
|
114
|
+
end
|
89
115
|
end
|
data/spec/fear/success_spec.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
RSpec.describe Fear::Success do
|
2
|
-
let(:success) {
|
2
|
+
let(:success) { Fear.success('value') }
|
3
3
|
|
4
4
|
it_behaves_like Fear::RightBiased::Right do
|
5
5
|
let(:right) { success }
|
@@ -77,18 +77,18 @@ RSpec.describe Fear::Success do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
describe '#recover_with' do
|
80
|
-
subject { success.recover_with { |v|
|
80
|
+
subject { success.recover_with { |v| Fear.success(v * 2) } }
|
81
81
|
it { is_expected.to eq(success) }
|
82
82
|
end
|
83
83
|
|
84
84
|
describe '#recover' do
|
85
|
-
subject { success.recover { |v| v * 2 } }
|
85
|
+
subject { success.recover { |m| m.case { |v| v * 2 } } }
|
86
86
|
it { is_expected.to eq(success) }
|
87
87
|
end
|
88
88
|
|
89
89
|
describe '#to_either' do
|
90
90
|
subject { success.to_either }
|
91
|
-
it { is_expected.to eq(
|
91
|
+
it { is_expected.to eq(Fear.right('value')) }
|
92
92
|
end
|
93
93
|
|
94
94
|
describe '#match' do
|
@@ -127,4 +127,32 @@ RSpec.describe Fear::Success do
|
|
127
127
|
it { is_expected.to eq(:default) }
|
128
128
|
end
|
129
129
|
end
|
130
|
+
|
131
|
+
describe '#to_s' do
|
132
|
+
subject { success.to_s }
|
133
|
+
|
134
|
+
it { is_expected.to eq('#<Fear::Success value="value">') }
|
135
|
+
end
|
136
|
+
|
137
|
+
describe 'pattern matching' do
|
138
|
+
subject { Fear.xcase('Success(v : Integer)') { |v:| "matched #{v}" }.call_or_else(var) { 'nothing' } }
|
139
|
+
|
140
|
+
context 'success of int' do
|
141
|
+
let(:var) { Fear.success(42) }
|
142
|
+
|
143
|
+
it { is_expected.to eq('matched 42') }
|
144
|
+
end
|
145
|
+
|
146
|
+
context 'success of string' do
|
147
|
+
let(:var) { Fear.success('42') }
|
148
|
+
|
149
|
+
it { is_expected.to eq('nothing') }
|
150
|
+
end
|
151
|
+
|
152
|
+
context 'not success' do
|
153
|
+
let(:var) { '42' }
|
154
|
+
|
155
|
+
it { is_expected.to eq('nothing') }
|
156
|
+
end
|
157
|
+
end
|
130
158
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
RSpec.describe Fear::Try::Mixin do
|
2
|
+
include Fear::Try::Mixin
|
3
|
+
|
4
|
+
describe 'Try()' do
|
5
|
+
context 'success' do
|
6
|
+
subject { Try { 4 / 2 } }
|
7
|
+
|
8
|
+
it { is_expected.to eq(Fear::Success.new(2)) }
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'failure' do
|
12
|
+
subject { Try { 4 / 0 } }
|
13
|
+
|
14
|
+
it { is_expected.to be_kind_of(Fear::Failure) }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,19 +1,17 @@
|
|
1
1
|
RSpec.describe Fear::TryPatternMatch do
|
2
|
-
include Fear::Try::Mixin
|
3
|
-
|
4
2
|
context 'Success' do
|
5
3
|
let(:matcher) do
|
6
4
|
described_class.new do |m|
|
7
|
-
m.success(:even
|
8
|
-
m.success(:odd
|
5
|
+
m.success(:even?.to_proc) { |x| "#{x} is even" }
|
6
|
+
m.success(:odd?.to_proc) { |x| "#{x} is odd" }
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
it do
|
13
|
-
expect(matcher.call(
|
14
|
-
expect(matcher.call(
|
11
|
+
expect(matcher.call(Fear.success(4))).to eq('4 is even')
|
12
|
+
expect(matcher.call(Fear.success(3))).to eq('3 is odd')
|
15
13
|
expect do
|
16
|
-
matcher.call(
|
14
|
+
matcher.call(Fear.failure(RuntimeError.new))
|
17
15
|
end.to raise_error(Fear::MatchError)
|
18
16
|
end
|
19
17
|
end
|
@@ -27,10 +25,10 @@ RSpec.describe Fear::TryPatternMatch do
|
|
27
25
|
end
|
28
26
|
|
29
27
|
it do
|
30
|
-
expect(matcher.call(
|
31
|
-
expect(matcher.call(
|
28
|
+
expect(matcher.call(Fear.failure(RuntimeError.new))).to eq('RuntimeError is first')
|
29
|
+
expect(matcher.call(Fear.failure(StandardError.new))).to eq('StandardError is second')
|
32
30
|
expect do
|
33
|
-
matcher.call(
|
31
|
+
matcher.call(Fear.success(44))
|
34
32
|
end.to raise_error(Fear::MatchError)
|
35
33
|
end
|
36
34
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,9 +4,9 @@
|
|
4
4
|
require 'fear'
|
5
5
|
require File.expand_path('spec/fear/right_biased/right')
|
6
6
|
require File.expand_path('spec/fear/right_biased/left')
|
7
|
+
require 'date'
|
7
8
|
|
8
9
|
RSpec.configure do |config|
|
9
|
-
config.include Fear::Mixin
|
10
10
|
# rspec-expectations config goes here. You can use an alternate
|
11
11
|
# assertion/expectation library such as wrong or the stdlib/minitest
|
12
12
|
# assertions if you prefer.
|
metadata
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fear
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tema Bolshakov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: lru_redux
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: treetop
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
|
-
type: :
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: concurrent-ruby
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: dry-matcher
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: dry-monads
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: qo
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,30 +204,63 @@ files:
|
|
176
204
|
- ".rubocop.yml"
|
177
205
|
- ".travis.yml"
|
178
206
|
- ".yardopts"
|
179
|
-
- Appraisals
|
180
207
|
- CHANGELOG.md
|
181
208
|
- Gemfile
|
209
|
+
- Gemfile.lock
|
182
210
|
- LICENSE.txt
|
183
211
|
- README.md
|
184
212
|
- Rakefile
|
213
|
+
- benchmarks/README.md
|
214
|
+
- benchmarks/dry_do_vs_fear_for.txt
|
215
|
+
- benchmarks/dry_some_fmap_vs_fear_some_map.txt
|
216
|
+
- benchmarks/factorial.txt
|
217
|
+
- benchmarks/fear_gaurd_and1_vs_new.txt
|
218
|
+
- benchmarks/fear_gaurd_and2_vs_and.txt
|
219
|
+
- benchmarks/fear_gaurd_and3_vs_and_and.txt
|
220
|
+
- benchmarks/fear_pattern_extracting_with_vs_without_cache.txt
|
221
|
+
- benchmarks/fear_pattern_matching_construction_vs_execution.txt
|
222
|
+
- benchmarks/pattern_matching_dry_vs_qo_vs_fear_try.txt
|
223
|
+
- benchmarks/pattern_matching_qo_vs_fear_pattern_extraction.txt
|
224
|
+
- benchmarks/pattern_matching_qo_vs_fear_try_execution.txt
|
225
|
+
- examples/pattern_extracting.rb
|
226
|
+
- examples/pattern_matching_binary_tree_set.rb
|
227
|
+
- examples/pattern_matching_number_in_words.rb
|
185
228
|
- fear.gemspec
|
186
|
-
- gemfiles/dry_equalizer_0.1.0.gemfile
|
187
|
-
- gemfiles/dry_equalizer_0.1.0.gemfile.lock
|
188
|
-
- gemfiles/dry_equalizer_0.2.1.gemfile
|
189
|
-
- gemfiles/dry_equalizer_0.2.1.gemfile.lock
|
190
229
|
- lib/fear.rb
|
191
|
-
- lib/fear/done.rb
|
192
230
|
- lib/fear/either.rb
|
231
|
+
- lib/fear/either_api.rb
|
193
232
|
- lib/fear/either_pattern_match.rb
|
194
233
|
- lib/fear/empty_partial_function.rb
|
234
|
+
- lib/fear/extractor.rb
|
235
|
+
- lib/fear/extractor/anonymous_array_splat_matcher.rb
|
236
|
+
- lib/fear/extractor/any_matcher.rb
|
237
|
+
- lib/fear/extractor/array_head_matcher.rb
|
238
|
+
- lib/fear/extractor/array_matcher.rb
|
239
|
+
- lib/fear/extractor/array_splat_matcher.rb
|
240
|
+
- lib/fear/extractor/empty_list_matcher.rb
|
241
|
+
- lib/fear/extractor/extractor_matcher.rb
|
242
|
+
- lib/fear/extractor/grammar.rb
|
243
|
+
- lib/fear/extractor/grammar.treetop
|
244
|
+
- lib/fear/extractor/identifier_matcher.rb
|
245
|
+
- lib/fear/extractor/matcher.rb
|
246
|
+
- lib/fear/extractor/matcher/and.rb
|
247
|
+
- lib/fear/extractor/named_array_splat_matcher.rb
|
248
|
+
- lib/fear/extractor/pattern.rb
|
249
|
+
- lib/fear/extractor/typed_identifier_matcher.rb
|
250
|
+
- lib/fear/extractor/value_matcher.rb
|
251
|
+
- lib/fear/extractor_api.rb
|
195
252
|
- lib/fear/failure.rb
|
196
253
|
- lib/fear/failure_pattern_match.rb
|
197
254
|
- lib/fear/for.rb
|
255
|
+
- lib/fear/for_api.rb
|
256
|
+
- lib/fear/future.rb
|
257
|
+
- lib/fear/future_api.rb
|
198
258
|
- lib/fear/left.rb
|
199
259
|
- lib/fear/left_pattern_match.rb
|
200
260
|
- lib/fear/none.rb
|
201
261
|
- lib/fear/none_pattern_match.rb
|
202
262
|
- lib/fear/option.rb
|
263
|
+
- lib/fear/option_api.rb
|
203
264
|
- lib/fear/option_pattern_match.rb
|
204
265
|
- lib/fear/partial_function.rb
|
205
266
|
- lib/fear/partial_function/and_then.rb
|
@@ -215,6 +276,7 @@ files:
|
|
215
276
|
- lib/fear/partial_function_class.rb
|
216
277
|
- lib/fear/pattern_match.rb
|
217
278
|
- lib/fear/pattern_matching_api.rb
|
279
|
+
- lib/fear/promise.rb
|
218
280
|
- lib/fear/right.rb
|
219
281
|
- lib/fear/right_biased.rb
|
220
282
|
- lib/fear/right_pattern_match.rb
|
@@ -223,29 +285,47 @@ files:
|
|
223
285
|
- lib/fear/success.rb
|
224
286
|
- lib/fear/success_pattern_match.rb
|
225
287
|
- lib/fear/try.rb
|
288
|
+
- lib/fear/try_api.rb
|
226
289
|
- lib/fear/try_pattern_match.rb
|
290
|
+
- lib/fear/unit.rb
|
227
291
|
- lib/fear/utils.rb
|
228
292
|
- lib/fear/version.rb
|
229
293
|
- spec/fear/done_spec.rb
|
294
|
+
- spec/fear/either/mixin_spec.rb
|
230
295
|
- spec/fear/either_pattern_match_spec.rb
|
296
|
+
- spec/fear/extractor/array_matcher_spec.rb
|
297
|
+
- spec/fear/extractor/extractor_matcher_spec.rb
|
298
|
+
- spec/fear/extractor/grammar_array_spec.rb
|
299
|
+
- spec/fear/extractor/identified_matcher_spec.rb
|
300
|
+
- spec/fear/extractor/identifier_matcher_spec.rb
|
301
|
+
- spec/fear/extractor/pattern_spec.rb
|
302
|
+
- spec/fear/extractor/typed_identifier_matcher_spec.rb
|
303
|
+
- spec/fear/extractor/value_matcher_number_spec.rb
|
304
|
+
- spec/fear/extractor/value_matcher_string_spec.rb
|
305
|
+
- spec/fear/extractor/value_matcher_symbol_spec.rb
|
306
|
+
- spec/fear/extractor_api_spec.rb
|
307
|
+
- spec/fear/extractor_spec.rb
|
231
308
|
- spec/fear/failure_spec.rb
|
232
309
|
- spec/fear/for_spec.rb
|
310
|
+
- spec/fear/future_spec.rb
|
233
311
|
- spec/fear/guard_spec.rb
|
234
312
|
- spec/fear/left_spec.rb
|
235
313
|
- spec/fear/none_spec.rb
|
314
|
+
- spec/fear/option/mixin_spec.rb
|
236
315
|
- spec/fear/option_pattern_match_spec.rb
|
237
|
-
- spec/fear/option_spec.rb
|
238
316
|
- spec/fear/partial_function/empty_spec.rb
|
239
317
|
- spec/fear/partial_function_and_then_spec.rb
|
240
318
|
- spec/fear/partial_function_composition_spec.rb
|
241
319
|
- spec/fear/partial_function_or_else_spec.rb
|
242
320
|
- spec/fear/partial_function_spec.rb
|
243
321
|
- spec/fear/pattern_match_spec.rb
|
322
|
+
- spec/fear/promise_spec.rb
|
244
323
|
- spec/fear/right_biased/left.rb
|
245
324
|
- spec/fear/right_biased/right.rb
|
246
325
|
- spec/fear/right_spec.rb
|
247
326
|
- spec/fear/some_spec.rb
|
248
327
|
- spec/fear/success_spec.rb
|
328
|
+
- spec/fear/try/mixin_spec.rb
|
249
329
|
- spec/fear/try_pattern_match_spec.rb
|
250
330
|
- spec/fear/utils_spec.rb
|
251
331
|
- spec/spec_helper.rb
|
@@ -256,7 +336,7 @@ metadata: {}
|
|
256
336
|
post_install_message: |2
|
257
337
|
Fear v0.11.0 introduces backwards-incompatible changes.
|
258
338
|
Please see https://github.com/bolshakov/fear/blob/master/CHANGELOG.md#0110 for details.
|
259
|
-
Successfully installed fear-0.
|
339
|
+
Successfully installed fear-1.0.0
|
260
340
|
rdoc_options: []
|
261
341
|
require_paths:
|
262
342
|
- lib
|
@@ -271,32 +351,47 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
351
|
- !ruby/object:Gem::Version
|
272
352
|
version: '0'
|
273
353
|
requirements: []
|
274
|
-
|
275
|
-
rubygems_version: 2.6.11
|
354
|
+
rubygems_version: 3.0.1
|
276
355
|
signing_key:
|
277
356
|
specification_version: 4
|
278
357
|
summary: "%q{Ruby port of some Scala's monads.}"
|
279
358
|
test_files:
|
280
359
|
- spec/fear/done_spec.rb
|
360
|
+
- spec/fear/either/mixin_spec.rb
|
281
361
|
- spec/fear/either_pattern_match_spec.rb
|
362
|
+
- spec/fear/extractor/array_matcher_spec.rb
|
363
|
+
- spec/fear/extractor/extractor_matcher_spec.rb
|
364
|
+
- spec/fear/extractor/grammar_array_spec.rb
|
365
|
+
- spec/fear/extractor/identified_matcher_spec.rb
|
366
|
+
- spec/fear/extractor/identifier_matcher_spec.rb
|
367
|
+
- spec/fear/extractor/pattern_spec.rb
|
368
|
+
- spec/fear/extractor/typed_identifier_matcher_spec.rb
|
369
|
+
- spec/fear/extractor/value_matcher_number_spec.rb
|
370
|
+
- spec/fear/extractor/value_matcher_string_spec.rb
|
371
|
+
- spec/fear/extractor/value_matcher_symbol_spec.rb
|
372
|
+
- spec/fear/extractor_api_spec.rb
|
373
|
+
- spec/fear/extractor_spec.rb
|
282
374
|
- spec/fear/failure_spec.rb
|
283
375
|
- spec/fear/for_spec.rb
|
376
|
+
- spec/fear/future_spec.rb
|
284
377
|
- spec/fear/guard_spec.rb
|
285
378
|
- spec/fear/left_spec.rb
|
286
379
|
- spec/fear/none_spec.rb
|
380
|
+
- spec/fear/option/mixin_spec.rb
|
287
381
|
- spec/fear/option_pattern_match_spec.rb
|
288
|
-
- spec/fear/option_spec.rb
|
289
382
|
- spec/fear/partial_function/empty_spec.rb
|
290
383
|
- spec/fear/partial_function_and_then_spec.rb
|
291
384
|
- spec/fear/partial_function_composition_spec.rb
|
292
385
|
- spec/fear/partial_function_or_else_spec.rb
|
293
386
|
- spec/fear/partial_function_spec.rb
|
294
387
|
- spec/fear/pattern_match_spec.rb
|
388
|
+
- spec/fear/promise_spec.rb
|
295
389
|
- spec/fear/right_biased/left.rb
|
296
390
|
- spec/fear/right_biased/right.rb
|
297
391
|
- spec/fear/right_spec.rb
|
298
392
|
- spec/fear/some_spec.rb
|
299
393
|
- spec/fear/success_spec.rb
|
394
|
+
- spec/fear/try/mixin_spec.rb
|
300
395
|
- spec/fear/try_pattern_match_spec.rb
|
301
396
|
- spec/fear/utils_spec.rb
|
302
397
|
- spec/spec_helper.rb
|