obligation 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89ad94f0f02e4b89ea1a2b0a3d4edf3b93d53dfa
4
- data.tar.gz: b30c77f10074e7101258c04e129064ed1139ce97
3
+ metadata.gz: 75787eca2f213420d4c1cbba32bd32d795c453cb
4
+ data.tar.gz: 6905d797f235dad221db7aed8ff57bb2758300de
5
5
  SHA512:
6
- metadata.gz: 468c583bbedf38e2067ef85748940f65ac849ecf4e307deaea29faed1e26c7fc37df0e4e0bae26444846f71831ad81c19d7189658f87b05df7e78b65836c7acb
7
- data.tar.gz: 4e8411787e1320da6c67ef2c32cc8129926bfdfc879c2926c1ece5d595273d2858f38b5f128dfc9f37639727d19f76e4305c1217aed3c0bd84fb178699b5fac4
6
+ metadata.gz: 9c1a7c03fbd6d2f9cf26a1886fb1551c9b747fd2be951ac8a9407e7b3a21e8729d90ac25d54bb56e6e9123949092312eab90bf2e3b78d2b3f552febd7abd22b6
7
+ data.tar.gz: 8f724da6545978f9d9aa15ea36c746cd16d58208afb567f14bf5f3753e7f7253d2f583fd9c176b1dba1872b2309ba07a1a86e8fbae8a94781a0d665fc5c26c9a
@@ -131,11 +131,7 @@ module Obligation
131
131
  @mutex.synchronize do
132
132
  if _sync_pending?
133
133
  begin
134
- if @dependencies.is_a?(Array)
135
- _sync_fulfill @block.call @dependencies.map(&:value)
136
- else
137
- _sync_fulfill @block.call @dependencies.value
138
- end
134
+ _sync_fulfill _nested @block.call _resolved_dependencies
139
135
  rescue RejectedError => e
140
136
  _sync_reject e.cause
141
137
  raise RejectedError.new "Obligation rejected due to #{e.cause}."
@@ -149,6 +145,18 @@ module Obligation
149
145
  end
150
146
  end
151
147
  end
148
+
149
+ def _resolved_dependencies
150
+ return @dependencies.map(&:value) if @dependencies.is_a?(Array)
151
+
152
+ @dependencies.value
153
+ end
154
+
155
+ def _nested(result)
156
+ return result.value if result.respond_to? :value
157
+
158
+ result
159
+ end
152
160
  end
153
161
 
154
162
  #
@@ -1,7 +1,7 @@
1
1
  module Obligation
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 1
4
+ MINOR = 2
5
5
  PATCH = 0
6
6
  STAGE = nil
7
7
  STRING = [MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join('.').freeze
@@ -26,6 +26,28 @@ describe Obligation do
26
26
  expect(result).to eq 1337
27
27
  end
28
28
 
29
+ it 'should return nested obligations' do
30
+ o1 = Obligation.create do |w|
31
+ Thread.new do
32
+ sleep 0.2
33
+ w.fulfill 42
34
+ end
35
+ end
36
+
37
+ o2 = o1.then do
38
+ Obligation.create do |r|
39
+ Thread.new do
40
+ sleep 0.2
41
+ r.fulfill 57
42
+ end
43
+ end
44
+ end
45
+
46
+ result = o2.value
47
+
48
+ expect(result).to eq 57
49
+ end
50
+
29
51
  it 'should inherit error on reject' do
30
52
  o1 = Obligation.create do |w|
31
53
  Thread.new do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: obligation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-29 00:00:00.000000000 Z
11
+ date: 2015-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  version: '0'
76
76
  requirements: []
77
77
  rubyforge_project:
78
- rubygems_version: 2.2.2
78
+ rubygems_version: 2.4.8
79
79
  signing_key:
80
80
  specification_version: 4
81
81
  summary: Support library to provide Futures and Promises for different concurrency
@@ -84,3 +84,4 @@ test_files:
84
84
  - spec/spec_helper.rb
85
85
  - spec/thread/then_spec.rb
86
86
  - spec/thread/value_spec.rb
87
+ has_rdoc: