fear 0.11.0 → 1.0.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/.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
|