promise.rb 0.7.2 → 0.7.3
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 +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
|