promise.rb 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +8 -1
- data/Gemfile +6 -6
- data/README.md +9 -0
- data/config/reek.yml +1 -1
- data/config/rubocop.yml +4 -1
- data/lib/promise.rb +3 -2
- data/lib/promise/version.rb +1 -1
- data/spec/unit/promise_spec.rb +10 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e3533c32b2d839c7fe076eb9ef7e02e38d594cf
|
4
|
+
data.tar.gz: 8041c55194508d424bf52709b0d55f97c75900a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7d7ea80750476d1334d79b24c87d6b2c50a3165f336e978064eab63398722bdb5d652aac575ca9826d28305099780e40812ae9def94a23f729a657f345b09d9
|
7
|
+
data.tar.gz: c079077407ed72f4d8b0e0ba688ec623f59a23e2e3ae4240209def4c9d54bfccc19a7105e21e484dc46a6db6fa79e7be7441f45e9ba9877f74a6d8ed68c58806
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,18 @@
|
|
1
1
|
# promise.rb changelog
|
2
2
|
|
3
|
+
## 0.7.3 (April 28, 2017)
|
4
|
+
|
5
|
+
### Features
|
6
|
+
|
7
|
+
* Allow to call Promise.resolve without argument (pull #21)
|
8
|
+
* Return self from fulfill and reject (pull #22)
|
9
|
+
|
3
10
|
## 0.7.2 (November 15, 2016)
|
4
11
|
|
5
12
|
### Features
|
6
13
|
|
7
14
|
* Add support for calling sync on the result of Promise.all (pull #24)
|
8
|
-
* Add Promise.sync to unwrap an object that may be a promise. (#25)
|
15
|
+
* Add Promise.sync to unwrap an object that may be a promise. (pull #25)
|
9
16
|
|
10
17
|
## 0.7.1 (June 15, 2016)
|
11
18
|
|
data/Gemfile
CHANGED
@@ -7,21 +7,21 @@ gemspec
|
|
7
7
|
if Gem.ruby_version < Gem::Version.new('2.0')
|
8
8
|
# gems that no longer support ruby 1.9.3
|
9
9
|
gem 'json', '~> 1.8.3'
|
10
|
-
gem 'tins', '~> 1.6.0'
|
11
10
|
gem 'term-ansicolor', '~> 1.3.2'
|
11
|
+
gem 'tins', '~> 1.6.0'
|
12
12
|
end
|
13
13
|
if Gem.ruby_version >= Gem::Version.new('2.1')
|
14
|
-
gem 'devtools', '~> 0.1.
|
14
|
+
gem 'devtools', '~> 0.1.16'
|
15
15
|
end
|
16
|
-
gem 'fuubar', '~> 2.0.0'
|
17
|
-
gem 'awesome_print'
|
18
16
|
|
17
|
+
gem 'awesome_print'
|
18
|
+
gem 'coveralls', '~> 0.8.9'
|
19
|
+
gem 'fuubar', '~> 2.0.0'
|
19
20
|
gem 'rake'
|
20
21
|
gem 'rspec', '~> 3.5'
|
21
22
|
gem 'rspec-its'
|
22
|
-
gem 'coveralls', '~> 0.8.9'
|
23
23
|
|
24
24
|
platform :rbx do
|
25
|
-
gem 'rubysl', '~> 2.0'
|
26
25
|
gem 'rubinius', '~> 2.0'
|
26
|
+
gem 'rubysl', '~> 2.0'
|
27
27
|
end
|
data/README.md
CHANGED
@@ -158,6 +158,15 @@ Promise.new
|
|
158
158
|
.then(nil, proc { |reason| p reason })
|
159
159
|
```
|
160
160
|
|
161
|
+
In order to use the result of multiple promises, they can be grouped using
|
162
|
+
`Promise.all` for chaining.
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
sum_promise = Promise.all([promise1, promise2]).then do |value1, value2|
|
166
|
+
value1 + value2
|
167
|
+
end
|
168
|
+
```
|
169
|
+
|
161
170
|
### Progress callbacks
|
162
171
|
|
163
172
|
Very simple progress callbacks, as per Promises/A, are supported as well. They have been dropped in A+, but I found them to be a useful mechanism - if kept simple. Callback dispatch happens immediately in the call to `#progress`, in the order of definition via `#on_progress`. Also note that `#on_progress` does not return a new promise for chaining - the progress mechanism is meant to be very lightweight, and ignores many of the constraints and guarantees of `then`.
|
data/config/reek.yml
CHANGED
data/config/rubocop.yml
CHANGED
@@ -14,7 +14,7 @@ ParameterLists:
|
|
14
14
|
|
15
15
|
MethodLength:
|
16
16
|
CountComments: false
|
17
|
-
Max:
|
17
|
+
Max: 11
|
18
18
|
|
19
19
|
# Avoid more than `Max` levels of nesting.
|
20
20
|
BlockNesting:
|
@@ -69,6 +69,9 @@ SignalException:
|
|
69
69
|
BlockDelimiters:
|
70
70
|
Enabled: false
|
71
71
|
|
72
|
+
Metrics/BlockLength:
|
73
|
+
Enabled: false
|
74
|
+
|
72
75
|
# Allow empty lines around body
|
73
76
|
EmptyLinesAroundBlockBody:
|
74
77
|
Enabled: false
|
data/lib/promise.rb
CHANGED
@@ -15,7 +15,7 @@ class Promise
|
|
15
15
|
attr_accessor :source
|
16
16
|
attr_reader :state, :value, :reason
|
17
17
|
|
18
|
-
def self.resolve(obj)
|
18
|
+
def self.resolve(obj = nil)
|
19
19
|
return obj if obj.is_a?(self)
|
20
20
|
new.tap { |promise| promise.fulfill(obj) }
|
21
21
|
end
|
@@ -85,7 +85,7 @@ class Promise
|
|
85
85
|
@value = value
|
86
86
|
end
|
87
87
|
end
|
88
|
-
|
88
|
+
self
|
89
89
|
end
|
90
90
|
|
91
91
|
def reject(reason = nil)
|
@@ -94,6 +94,7 @@ class Promise
|
|
94
94
|
@source = nil
|
95
95
|
@reason = reason_coercion(reason || Error)
|
96
96
|
end
|
97
|
+
self
|
97
98
|
end
|
98
99
|
|
99
100
|
# Override to support sync on a promise without a source or to wait
|
data/lib/promise/version.rb
CHANGED
data/spec/unit/promise_spec.rb
CHANGED
@@ -398,12 +398,8 @@ describe Promise do
|
|
398
398
|
end
|
399
399
|
|
400
400
|
describe '#fulfill' do
|
401
|
-
it '
|
402
|
-
expect(subject.fulfill(nil)).to
|
403
|
-
end
|
404
|
-
|
405
|
-
it 'does not return anything when given a promise' do
|
406
|
-
expect(subject.fulfill(Promise.new)).to eq(nil)
|
401
|
+
it 'returns itself to allow chaining' do
|
402
|
+
expect(subject.fulfill(nil)).to be(subject)
|
407
403
|
end
|
408
404
|
|
409
405
|
it 'does not require a value' do
|
@@ -424,8 +420,8 @@ describe Promise do
|
|
424
420
|
end
|
425
421
|
|
426
422
|
describe '#reject' do
|
427
|
-
it '
|
428
|
-
expect(subject.reject(nil)).to
|
423
|
+
it 'returns itself for easy chaning' do
|
424
|
+
expect(subject.reject(nil)).to be(subject)
|
429
425
|
end
|
430
426
|
|
431
427
|
it 'does not require a reason' do
|
@@ -558,6 +554,12 @@ describe Promise do
|
|
558
554
|
expect(new_promise).to be_fulfilled
|
559
555
|
expect(new_promise.value).to eq(42)
|
560
556
|
end
|
557
|
+
|
558
|
+
it 'can be passed no argument' do
|
559
|
+
promise = Promise.resolve
|
560
|
+
expect(promise.fulfilled?).to eq(true)
|
561
|
+
expect(promise.value).to eq(nil)
|
562
|
+
end
|
561
563
|
end
|
562
564
|
|
563
565
|
describe '.all' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: promise.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Gierth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
76
|
version: '0'
|
77
77
|
requirements: []
|
78
78
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.
|
79
|
+
rubygems_version: 2.6.10
|
80
80
|
signing_key:
|
81
81
|
specification_version: 4
|
82
82
|
summary: Ruby implementation of the Promises/A+ spec
|