promise.rb 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 167485e5a9ba45d151d029e5b067079dcb2dabd1
4
- data.tar.gz: 2f4eca3f6a4b22f09708e92dac211d0851c646fd
3
+ metadata.gz: c7dee00af5f45fbb9d9d19bf97268b908b0134d2
4
+ data.tar.gz: 75cc57634668e4d7f0b0f0e8200b89b46ecd04e0
5
5
  SHA512:
6
- metadata.gz: 3850720bbef2c6c812b4431d79ee4a3593401ff9c724172c2b3ac7ba581447c55b4ad0539c8255dfd34e75de0acf54b1836067b5e9ee059a32b0abe4c7e26f61
7
- data.tar.gz: e57d239371b8905f202ddb9956349cc60186e5154c335ba5dfb6eb27811c961605f8ab54f316dde42e963e6d058ddfe51f14f1bd1fda68eb842287a2111f1a8b
6
+ metadata.gz: a825e41f6f0c09abacfca43c33cb9aaf7715f32f6a3de6d73b5733db48808d55231155f9490a80e54a64d063afad1227a90e7bb3f4cb2b3a6d3e6c6019312275
7
+ data.tar.gz: 43cc9b875210365d96cf180ad306da81d18bb9dd38a66411f8b8ce3fbf9385d2687463f1d5ab1737d45763d2a2d953c44979cd9efe023ce3e9f9ea413ae6f4d6
@@ -1,5 +1,11 @@
1
1
  # promise.rb changelog
2
2
 
3
+ ## 0.7.1 (June 15, 2016)
4
+
5
+ ### Features
6
+
7
+ * Add Promise.map_value for chaining a promise or plain value
8
+
3
9
  ## 0.7.0 (February 24, 2016)
4
10
 
5
11
  ### Features
data/Rakefile CHANGED
@@ -5,13 +5,13 @@ if Gem.ruby_version >= Gem::Version.new('2.1')
5
5
  Devtools.init_rake_tasks
6
6
 
7
7
  tasks = %w[
8
- metrics:coverage
9
8
  metrics:yardstick:verify
10
9
  metrics:rubocop
11
10
  metrics:flog
12
11
  metrics:reek
13
12
  spec:integration
14
13
  ]
14
+ tasks << 'metrics:coverage' unless RUBY_ENGINE == 'rbx'
15
15
  tasks << 'metrics:mutant' if RUBY_ENGINE == 'ruby'
16
16
  task :default => tasks
17
17
  else
@@ -22,6 +22,14 @@ class Promise
22
22
  Group.new(new, enumerable).promise
23
23
  end
24
24
 
25
+ def self.map_value(obj)
26
+ if obj.is_a?(Promise)
27
+ obj.then { |value| yield value }
28
+ else
29
+ yield obj
30
+ end
31
+ end
32
+
25
33
  def initialize
26
34
  @state = :pending
27
35
  @callbacks = []
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  class Promise
4
- VERSION = '0.7.0'.freeze
4
+ VERSION = '0.7.1'.freeze
5
5
  end
@@ -576,5 +576,23 @@ describe Promise do
576
576
  expect(result.sync).to eq([1.0, 2])
577
577
  end
578
578
  end
579
+
580
+ describe '.map_value' do
581
+ it "yields the argument directly if it isn't a promise" do
582
+ p = Promise.map_value(2) { |v| v + 1 }
583
+ expect(p).to eq(3)
584
+ end
585
+
586
+ it 'uses .then on a promise argument using the given block' do
587
+ p = Promise.map_value(Promise.resolve(2)) { |v| v + 1 }
588
+ expect(p.sync).to eq(3)
589
+ end
590
+
591
+ it 'uses .then on a promise argument of another class' do
592
+ p1 = Class.new(Promise).resolve(2)
593
+ p2 = DelayedPromise.map_value(p1) { |v| v + 1 }
594
+ expect(p2.sync).to eq(3)
595
+ end
596
+ end
579
597
  end
580
598
  end
metadata CHANGED
@@ -1,24 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: promise.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Gierth
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-24 00:00:00.000000000 Z
11
+ date: 2016-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
18
  version: '0'
20
- type: :development
19
+ name: rspec
21
20
  prerelease: false
21
+ type: :development
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
@@ -59,7 +59,7 @@ homepage: https://github.com/lgierth/promise
59
59
  licenses:
60
60
  - Public Domain
61
61
  metadata: {}
62
- post_install_message:
62
+ post_install_message:
63
63
  rdoc_options: []
64
64
  require_paths:
65
65
  - lib
@@ -74,13 +74,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubyforge_project:
78
- rubygems_version: 2.2.5
79
- signing_key:
77
+ rubyforge_project:
78
+ rubygems_version: 2.4.8
79
+ signing_key:
80
80
  specification_version: 4
81
81
  summary: Ruby implementation of the Promises/A+ spec
82
82
  test_files:
83
83
  - spec/spec_helper.rb
84
84
  - spec/support/delayed_promise.rb
85
85
  - spec/unit/promise_spec.rb
86
- has_rdoc:
86
+ has_rdoc: