mr_darcy 0.1.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 +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +7 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +95 -0
- data/Guardfile +14 -0
- data/LICENSE.txt +22 -0
- data/README.md +267 -0
- data/Rakefile +6 -0
- data/lib/mr_darcy/context.rb +71 -0
- data/lib/mr_darcy/deferred.rb +25 -0
- data/lib/mr_darcy/drivers/celluloid.rb +23 -0
- data/lib/mr_darcy/drivers/synchronous.rb +15 -0
- data/lib/mr_darcy/drivers/thread.rb +22 -0
- data/lib/mr_darcy/drivers.rb +13 -0
- data/lib/mr_darcy/promise/base.rb +117 -0
- data/lib/mr_darcy/promise/celluloid.rb +52 -0
- data/lib/mr_darcy/promise/child_promise.rb +83 -0
- data/lib/mr_darcy/promise/dsl.rb +29 -0
- data/lib/mr_darcy/promise/em.rb +29 -0
- data/lib/mr_darcy/promise/state/base.rb +43 -0
- data/lib/mr_darcy/promise/state/rejected.rb +11 -0
- data/lib/mr_darcy/promise/state/resolved.rb +11 -0
- data/lib/mr_darcy/promise/state/unresolved.rb +19 -0
- data/lib/mr_darcy/promise/state.rb +25 -0
- data/lib/mr_darcy/promise/synchronous.rb +27 -0
- data/lib/mr_darcy/promise/thread.rb +64 -0
- data/lib/mr_darcy/promise.rb +31 -0
- data/lib/mr_darcy/role.rb +45 -0
- data/lib/mr_darcy/version.rb +3 -0
- data/lib/mr_darcy.rb +26 -0
- data/mr_darcy.gemspec +29 -0
- data/spec/acceptance/dci_bank_transfer_spec.rb +62 -0
- data/spec/acceptance/em_http_request_spec.rb +22 -0
- data/spec/acceptance/open-uri_http_request_spec.rb +21 -0
- data/spec/acceptance/simple_promise_spec.rb +25 -0
- data/spec/acceptance/simple_promise_with_chained_fail.rb +25 -0
- data/spec/acceptance/simple_promise_with_fail_spec.rb +25 -0
- data/spec/acceptance/simple_promise_with_then_spec.rb +25 -0
- data/spec/lib/mr_darcy/context_spec.rb +22 -0
- data/spec/lib/mr_darcy/promise/base_spec.rb +197 -0
- data/spec/lib/mr_darcy/promise/child_promise_spec.rb +169 -0
- data/spec/lib/mr_darcy/promise/dsl_spec.rb +43 -0
- data/spec/lib/mr_darcy/promise/state/base_spec.rb +24 -0
- data/spec/lib/mr_darcy/promise/state/rejected_spec.rb +12 -0
- data/spec/lib/mr_darcy/promise/state/resolved_spec.rb +12 -0
- data/spec/lib/mr_darcy/promise/state/unresolved_spec.rb +22 -0
- data/spec/lib/mr_darcy/promise/state_spec.rb +30 -0
- data/spec/lib/mr_darcy/promise/synchronous_spec.rb +21 -0
- data/spec/lib/mr_darcy/promise_spec.rb +72 -0
- data/spec/lib/mr_darcy/role_spec.rb +89 -0
- data/spec/lib/mr_darcy_spec.rb +19 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/context_helpers.rb +19 -0
- data/spec/support/shared_examples_for_promise.rb +47 -0
- data/spec/support/shared_examples_for_thennable.rb +10 -0
- metadata +279 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MrDarcy::Promise::State::Unresolved do
|
4
|
+
let(:initial_state) { :unresolved }
|
5
|
+
let(:stateful) { Struct.new(:state).new initial_state }
|
6
|
+
let(:state) { described_class.new stateful }
|
7
|
+
|
8
|
+
subject { state }
|
9
|
+
|
10
|
+
it { should be_a MrDarcy::Promise::State::Base }
|
11
|
+
its(:unresolved?) { should be_true }
|
12
|
+
|
13
|
+
describe '#resolve' do
|
14
|
+
subject { -> { state.resolve } }
|
15
|
+
it { should change { stateful.state }.from(:unresolved).to(:resolved) }
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#reject' do
|
19
|
+
subject { -> { state.reject } }
|
20
|
+
it { should change { stateful.state }.from(:unresolved).to(:rejected) }
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MrDarcy::Promise::State do
|
4
|
+
describe '#state' do
|
5
|
+
let(:stateful) { Struct.new(:state).new initial_state }
|
6
|
+
subject { MrDarcy::Promise::State.state stateful }
|
7
|
+
|
8
|
+
When 'the state is unresolved' do
|
9
|
+
let(:initial_state) { :unresolved }
|
10
|
+
it { should be_an MrDarcy::Promise::State::Unresolved }
|
11
|
+
end
|
12
|
+
|
13
|
+
When 'the state is resolved' do
|
14
|
+
let(:initial_state) { :resolved }
|
15
|
+
it { should be_an MrDarcy::Promise::State::Resolved }
|
16
|
+
end
|
17
|
+
|
18
|
+
When 'the state is rejected' do
|
19
|
+
let(:initial_state) { :rejected }
|
20
|
+
it { should be_an MrDarcy::Promise::State::Rejected }
|
21
|
+
end
|
22
|
+
|
23
|
+
Otherwise do
|
24
|
+
let(:initial_state) { :foo }
|
25
|
+
it 'raises an exception' do
|
26
|
+
expect { subject }.to raise_error
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MrDarcy::Promise::Synchronous do
|
4
|
+
let(:sync) { described_class.new proc {} }
|
5
|
+
subject { sync }
|
6
|
+
|
7
|
+
it { should respond_to :result }
|
8
|
+
it { should respond_to :final }
|
9
|
+
|
10
|
+
describe '#schedule_promise' do
|
11
|
+
it 'yields immediately' do
|
12
|
+
expect { |b| sync.send(:schedule_promise, &b) }.to yield_control.once
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#generate_child_promise' do
|
17
|
+
it 'creates a child promise with the correct driver' do
|
18
|
+
expect(sync.send(:generate_child_promise).promise).to be_a described_class
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MrDarcy::Promise do
|
4
|
+
describe '.new' do
|
5
|
+
let(:driver) { nil }
|
6
|
+
subject { MrDarcy::Promise.new(driver: driver) {} }
|
7
|
+
|
8
|
+
When 'no driver is provided' do
|
9
|
+
subject { MrDarcy::Promise.new {} }
|
10
|
+
|
11
|
+
it 'uses the default' do
|
12
|
+
expect(MrDarcy).to receive(:driver).and_return(:thread)
|
13
|
+
expect(subject).to be_a MrDarcy::Promise::Thread
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
When 'driver is :thread' do
|
18
|
+
let(:driver) { :thread }
|
19
|
+
it { should be_a MrDarcy::Promise::Thread }
|
20
|
+
end
|
21
|
+
|
22
|
+
When 'driver is :Thread' do
|
23
|
+
let(:driver) { :Thread }
|
24
|
+
it { should be_a MrDarcy::Promise::Thread }
|
25
|
+
end
|
26
|
+
|
27
|
+
When 'driver is :synchronous' do
|
28
|
+
let(:driver) { :synchronous }
|
29
|
+
it { should be_a MrDarcy::Promise::Synchronous }
|
30
|
+
end
|
31
|
+
|
32
|
+
When 'driver is :Synchronous' do
|
33
|
+
let(:driver) { :Synchronous }
|
34
|
+
it { should be_a MrDarcy::Promise::Synchronous }
|
35
|
+
end
|
36
|
+
|
37
|
+
When 'driver is :celluloid' do
|
38
|
+
let(:driver) { :celluloid }
|
39
|
+
it { should be_a MrDarcy::Promise::Celluloid }
|
40
|
+
end
|
41
|
+
|
42
|
+
When 'driver is :Celluloid' do
|
43
|
+
let(:driver) { :Celluloid }
|
44
|
+
it { should be_a MrDarcy::Promise::Celluloid }
|
45
|
+
end
|
46
|
+
|
47
|
+
When 'driver is :em' do
|
48
|
+
let(:driver) { :em }
|
49
|
+
it { should be_a MrDarcy::Promise::EM }
|
50
|
+
end
|
51
|
+
|
52
|
+
When 'driver is :EM' do
|
53
|
+
let(:driver) { :EM }
|
54
|
+
it { should be_a MrDarcy::Promise::EM }
|
55
|
+
end
|
56
|
+
|
57
|
+
When 'driver is :event_machine' do
|
58
|
+
let(:driver) { :event_machine }
|
59
|
+
it { should be_a MrDarcy::Promise::EM }
|
60
|
+
end
|
61
|
+
|
62
|
+
When 'driver is :eventmachine' do
|
63
|
+
let(:driver) { :eventmachine }
|
64
|
+
it { should be_a MrDarcy::Promise::EM }
|
65
|
+
end
|
66
|
+
|
67
|
+
When 'driver is :EventMachine' do
|
68
|
+
let(:driver) { :EventMachine }
|
69
|
+
it { should be_a MrDarcy::Promise::EM }
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'mr_darcy/role'
|
2
|
+
|
3
|
+
describe MrDarcy::Role do
|
4
|
+
let(:name) { :money_source }
|
5
|
+
let(:opts) { Hash.new }
|
6
|
+
let(:role_methods) do
|
7
|
+
proc do
|
8
|
+
def really_a_money_source?
|
9
|
+
:yup
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
let(:role) { MrDarcy::Role.new name, opts, &role_methods }
|
14
|
+
subject { role }
|
15
|
+
|
16
|
+
it { should respond_to :name }
|
17
|
+
it { should respond_to :options }
|
18
|
+
|
19
|
+
describe '#name' do
|
20
|
+
subject { role.name }
|
21
|
+
|
22
|
+
it { should eq name }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#options' do
|
26
|
+
let(:opts) { { test_options: true } }
|
27
|
+
subject { role.options }
|
28
|
+
|
29
|
+
it { should eq opts }
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#pollute' do
|
33
|
+
let(:player) { Object.new }
|
34
|
+
|
35
|
+
context 'pollution' do
|
36
|
+
before { role.pollute player }
|
37
|
+
subject { player }
|
38
|
+
|
39
|
+
it { should respond_to :really_a_money_source? }
|
40
|
+
its(:really_a_money_source?) { should eq :yup }
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when the role has a method requirement" do
|
44
|
+
let(:opts) { { must_respond_to: :name } }
|
45
|
+
subject { -> { role.pollute player } }
|
46
|
+
|
47
|
+
context "and the player does not implement it" do
|
48
|
+
it { should raise_error }
|
49
|
+
end
|
50
|
+
|
51
|
+
context "and the player does implement it" do
|
52
|
+
let(:player) { Class.new { def name; 'my name'; end }.new }
|
53
|
+
it { should_not raise_error }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "when the role is a method refusal" do
|
58
|
+
let(:opts) { { must_not_respond_to: :name } }
|
59
|
+
subject { -> { role.pollute player } }
|
60
|
+
|
61
|
+
context "and the player does not implement it" do
|
62
|
+
it { should_not raise_error }
|
63
|
+
end
|
64
|
+
|
65
|
+
context "and the player does implement it" do
|
66
|
+
let(:player) { Class.new { def name; 'my name'; end }.new }
|
67
|
+
it { should raise_error }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "when there is an unknown option" do
|
72
|
+
let(:opts) { { must_be_super_awesome: true } }
|
73
|
+
subject { -> { role.pollute player } }
|
74
|
+
it { should raise_error }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#clean' do
|
79
|
+
let(:player) { Object.new }
|
80
|
+
before do
|
81
|
+
role.pollute player
|
82
|
+
expect(player).to respond_to :really_a_money_source?
|
83
|
+
role.clean player
|
84
|
+
end
|
85
|
+
subject { player }
|
86
|
+
|
87
|
+
it { should_not respond_to :really_a_money_source? }
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MrDarcy do
|
4
|
+
it { should be }
|
5
|
+
it { should respond_to :driver }
|
6
|
+
it { should respond_to :driver= }
|
7
|
+
|
8
|
+
# This spec doesn't pass on CI. I can't figure out why.
|
9
|
+
# describe '#promise' do
|
10
|
+
# When 'no driver is specified' do
|
11
|
+
# subject { MrDarcy.promise {} }
|
12
|
+
|
13
|
+
# it 'uses whichever driver is the default' do
|
14
|
+
# expect(MrDarcy).to receive(:driver).and_return(:thread)
|
15
|
+
# subject
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module ContextHelpers
|
2
|
+
def When(msg=nil,&block)
|
3
|
+
context("When#{left_pad msg}", &block)
|
4
|
+
end
|
5
|
+
|
6
|
+
def Otherwise(msg=nil,&block)
|
7
|
+
context("Otherwise#{left_pad msg}", &block)
|
8
|
+
end
|
9
|
+
|
10
|
+
def And(msg=nil,&block)
|
11
|
+
context("And#{left_pad msg}", &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def left_pad(msg)
|
17
|
+
msg ? " #{msg}" : ""
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
shared_examples_for "a promise" do
|
2
|
+
it_behaves_like :thenable
|
3
|
+
|
4
|
+
describe '#then' do
|
5
|
+
its(:then) { should be_a MrDarcy::Promise::Base }
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#fail' do
|
9
|
+
its(:fail) { should be_a MrDarcy::Promise::Base }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
shared_examples_for 'a resolved promise' do
|
14
|
+
it_should_behave_like 'a promise'
|
15
|
+
|
16
|
+
its(:final) { should be_resolved }
|
17
|
+
its(:final) { should_not be_rejected }
|
18
|
+
its(:final) { should_not be_unresolved }
|
19
|
+
|
20
|
+
it "doesn't raise an exception" do
|
21
|
+
expect { subject.raise }.not_to raise_exception
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
shared_examples_for 'an unresolved promise' do
|
26
|
+
it_should_behave_like 'a promise'
|
27
|
+
|
28
|
+
its(:final) { should_not be_resolved }
|
29
|
+
its(:final) { should_not be_rejected }
|
30
|
+
its(:final) { should be_unresolved }
|
31
|
+
|
32
|
+
it "doesn't raise an exception" do
|
33
|
+
expect { subject.raise }.not_to raise_exception
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
shared_examples_for 'a rejected promise' do
|
38
|
+
it_should_behave_like 'a promise'
|
39
|
+
|
40
|
+
its(:final) { should_not be_resolved }
|
41
|
+
its(:final) { should be_rejected }
|
42
|
+
its(:final) { should_not be_unresolved }
|
43
|
+
|
44
|
+
it "raises an exception" do
|
45
|
+
expect { subject.raise }.to raise_exception
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
shared_examples_for :thenable do
|
2
|
+
it { should respond_to :then }
|
3
|
+
it { should respond_to :fail }
|
4
|
+
it { should respond_to :result }
|
5
|
+
it { should respond_to :final }
|
6
|
+
it { should respond_to :raise }
|
7
|
+
it { should respond_to :unresolved? }
|
8
|
+
it { should respond_to :resolved? }
|
9
|
+
it { should respond_to :rejected? }
|
10
|
+
end
|
metadata
ADDED
@@ -0,0 +1,279 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mr_darcy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Harton
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-rspec
|
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'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: terminal-notifier-guard
|
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'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: eventmachine
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: em-http-request
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: celluloid
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
description: |2
|
168
|
+
MrDarcy takes async promises from the javascript word, DCI from Jim
|
169
|
+
Gay's brain and sprinkles some ruby on top for great justice!
|
170
|
+
email:
|
171
|
+
- james@resistor.io
|
172
|
+
executables: []
|
173
|
+
extensions: []
|
174
|
+
extra_rdoc_files: []
|
175
|
+
files:
|
176
|
+
- .gitignore
|
177
|
+
- .travis.yml
|
178
|
+
- Gemfile
|
179
|
+
- Gemfile.lock
|
180
|
+
- Guardfile
|
181
|
+
- LICENSE.txt
|
182
|
+
- README.md
|
183
|
+
- Rakefile
|
184
|
+
- lib/mr_darcy.rb
|
185
|
+
- lib/mr_darcy/context.rb
|
186
|
+
- lib/mr_darcy/deferred.rb
|
187
|
+
- lib/mr_darcy/drivers.rb
|
188
|
+
- lib/mr_darcy/drivers/celluloid.rb
|
189
|
+
- lib/mr_darcy/drivers/synchronous.rb
|
190
|
+
- lib/mr_darcy/drivers/thread.rb
|
191
|
+
- lib/mr_darcy/promise.rb
|
192
|
+
- lib/mr_darcy/promise/base.rb
|
193
|
+
- lib/mr_darcy/promise/celluloid.rb
|
194
|
+
- lib/mr_darcy/promise/child_promise.rb
|
195
|
+
- lib/mr_darcy/promise/dsl.rb
|
196
|
+
- lib/mr_darcy/promise/em.rb
|
197
|
+
- lib/mr_darcy/promise/state.rb
|
198
|
+
- lib/mr_darcy/promise/state/base.rb
|
199
|
+
- lib/mr_darcy/promise/state/rejected.rb
|
200
|
+
- lib/mr_darcy/promise/state/resolved.rb
|
201
|
+
- lib/mr_darcy/promise/state/unresolved.rb
|
202
|
+
- lib/mr_darcy/promise/synchronous.rb
|
203
|
+
- lib/mr_darcy/promise/thread.rb
|
204
|
+
- lib/mr_darcy/role.rb
|
205
|
+
- lib/mr_darcy/version.rb
|
206
|
+
- mr_darcy.gemspec
|
207
|
+
- spec/acceptance/dci_bank_transfer_spec.rb
|
208
|
+
- spec/acceptance/em_http_request_spec.rb
|
209
|
+
- spec/acceptance/open-uri_http_request_spec.rb
|
210
|
+
- spec/acceptance/simple_promise_spec.rb
|
211
|
+
- spec/acceptance/simple_promise_with_chained_fail.rb
|
212
|
+
- spec/acceptance/simple_promise_with_fail_spec.rb
|
213
|
+
- spec/acceptance/simple_promise_with_then_spec.rb
|
214
|
+
- spec/lib/mr_darcy/context_spec.rb
|
215
|
+
- spec/lib/mr_darcy/promise/base_spec.rb
|
216
|
+
- spec/lib/mr_darcy/promise/child_promise_spec.rb
|
217
|
+
- spec/lib/mr_darcy/promise/dsl_spec.rb
|
218
|
+
- spec/lib/mr_darcy/promise/state/base_spec.rb
|
219
|
+
- spec/lib/mr_darcy/promise/state/rejected_spec.rb
|
220
|
+
- spec/lib/mr_darcy/promise/state/resolved_spec.rb
|
221
|
+
- spec/lib/mr_darcy/promise/state/unresolved_spec.rb
|
222
|
+
- spec/lib/mr_darcy/promise/state_spec.rb
|
223
|
+
- spec/lib/mr_darcy/promise/synchronous_spec.rb
|
224
|
+
- spec/lib/mr_darcy/promise_spec.rb
|
225
|
+
- spec/lib/mr_darcy/role_spec.rb
|
226
|
+
- spec/lib/mr_darcy_spec.rb
|
227
|
+
- spec/spec_helper.rb
|
228
|
+
- spec/support/context_helpers.rb
|
229
|
+
- spec/support/shared_examples_for_promise.rb
|
230
|
+
- spec/support/shared_examples_for_thennable.rb
|
231
|
+
homepage: https://github.com/jamesotron/MrDarcy
|
232
|
+
licenses:
|
233
|
+
- MIT
|
234
|
+
metadata: {}
|
235
|
+
post_install_message:
|
236
|
+
rdoc_options: []
|
237
|
+
require_paths:
|
238
|
+
- lib
|
239
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - '>='
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
245
|
+
requirements:
|
246
|
+
- - '>='
|
247
|
+
- !ruby/object:Gem::Version
|
248
|
+
version: '0'
|
249
|
+
requirements: []
|
250
|
+
rubyforge_project:
|
251
|
+
rubygems_version: 2.1.11
|
252
|
+
signing_key:
|
253
|
+
specification_version: 4
|
254
|
+
summary: A mashup of async Promises and DCI in Ruby.
|
255
|
+
test_files:
|
256
|
+
- spec/acceptance/dci_bank_transfer_spec.rb
|
257
|
+
- spec/acceptance/em_http_request_spec.rb
|
258
|
+
- spec/acceptance/open-uri_http_request_spec.rb
|
259
|
+
- spec/acceptance/simple_promise_spec.rb
|
260
|
+
- spec/acceptance/simple_promise_with_chained_fail.rb
|
261
|
+
- spec/acceptance/simple_promise_with_fail_spec.rb
|
262
|
+
- spec/acceptance/simple_promise_with_then_spec.rb
|
263
|
+
- spec/lib/mr_darcy/context_spec.rb
|
264
|
+
- spec/lib/mr_darcy/promise/base_spec.rb
|
265
|
+
- spec/lib/mr_darcy/promise/child_promise_spec.rb
|
266
|
+
- spec/lib/mr_darcy/promise/dsl_spec.rb
|
267
|
+
- spec/lib/mr_darcy/promise/state/base_spec.rb
|
268
|
+
- spec/lib/mr_darcy/promise/state/rejected_spec.rb
|
269
|
+
- spec/lib/mr_darcy/promise/state/resolved_spec.rb
|
270
|
+
- spec/lib/mr_darcy/promise/state/unresolved_spec.rb
|
271
|
+
- spec/lib/mr_darcy/promise/state_spec.rb
|
272
|
+
- spec/lib/mr_darcy/promise/synchronous_spec.rb
|
273
|
+
- spec/lib/mr_darcy/promise_spec.rb
|
274
|
+
- spec/lib/mr_darcy/role_spec.rb
|
275
|
+
- spec/lib/mr_darcy_spec.rb
|
276
|
+
- spec/spec_helper.rb
|
277
|
+
- spec/support/context_helpers.rb
|
278
|
+
- spec/support/shared_examples_for_promise.rb
|
279
|
+
- spec/support/shared_examples_for_thennable.rb
|