promise.rb 0.7.0 → 0.7.1

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: 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: