rpromise 0.1.2 → 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: 6a717f4226d359019498c9ce4aa6f47bffb97d89
4
- data.tar.gz: df6fbd05f8e20065d2f9a1ff17110810b8e34cfc
3
+ metadata.gz: 16f6311980e55c27386c4edf93b2c58864a395b8
4
+ data.tar.gz: ac7642a6d38a79bce94f358d8e29dacd5948b66e
5
5
  SHA512:
6
- metadata.gz: 2d8305e2ecae4c6aa80150b6294ac93b38ab1b836ab4114c821b2d731f072a2fd3ecc13f30e2f32a91ac92979789f7dde06b3a1f7a370be3ef2a0a5c684a7eff
7
- data.tar.gz: 4852082d68d72be33c8897e31192da03ca4354ed22fa86974925da93838d40c9ae55e37e21cb154e87960ef16f682ea39e6f4d9e279963dfaf0e8221c40b8c80
6
+ metadata.gz: 4dba3ecadeb7047e5c4de046c5fea66023f37cbf77ebc74a211f9ca374a6a7720ff31bc4fed452a590cbd5aedb00efacc1881d7e5bbbc2a14125135d17fc1bc9
7
+ data.tar.gz: 23f7214a55a31d6427a3f37425f61f341ba299a1593cac98d65737993599a1ce506de8acd6039112542f9a0f9ce7c0f51bd5642772283eb72915c8bcaa158237
data/README.md CHANGED
@@ -149,6 +149,16 @@ promise.then(lambda do |value|
149
149
  end)
150
150
  ```
151
151
 
152
+ or you can convert a method to a promise
153
+
154
+ ```ruby
155
+ promise = 100.method(:to_s).to_rpromise
156
+
157
+ promise.then(lambda do |value|
158
+ value[0...2] # => "10"
159
+ end)
160
+ ```
161
+
152
162
  ## Contributing
153
163
 
154
164
  1. Fork it
data/lib/method.rb ADDED
@@ -0,0 +1,7 @@
1
+ class Method
2
+ def to_rpromise(*args, &block)
3
+ Rpromise.new do |resolve, reject|
4
+ resolve.call(self.call(*args, &block))
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  class Rpromise
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/rpromise.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rpromise/version'
2
+ require 'method'
2
3
 
3
4
  class Rpromise
4
5
  module State
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Method do
4
+ MyObject = Struct.new(:store) do
5
+ def method_with_args(*args)
6
+ return args
7
+ end
8
+ def method_with_block
9
+ yield
10
+ end
11
+ end
12
+
13
+ let(:obj) { MyObject.new('Hello World') }
14
+
15
+ describe '#to_rpromise' do
16
+ it 'converts method object to a promise' do
17
+ lambda_value = nil
18
+ lock = true
19
+ p = obj.method(:store).to_rpromise
20
+ p.then(lambda do |value|
21
+ lambda_value = value
22
+ lock = false
23
+ end)
24
+ loop { break unless lock }
25
+ expect(lambda_value).to eq 'Hello World'
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rpromise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Molinari
@@ -109,9 +109,11 @@ files:
109
109
  - LICENSE.txt
110
110
  - README.md
111
111
  - Rakefile
112
+ - lib/method.rb
112
113
  - lib/rpromise.rb
113
114
  - lib/rpromise/version.rb
114
115
  - rpromise.gemspec
116
+ - spec/lib/method_spec.rb
115
117
  - spec/lib/rpromise_spec.rb
116
118
  - spec/spec_helper.rb
117
119
  homepage: ''
@@ -139,5 +141,6 @@ signing_key:
139
141
  specification_version: 4
140
142
  summary: Handle async method easily
141
143
  test_files:
144
+ - spec/lib/method_spec.rb
142
145
  - spec/lib/rpromise_spec.rb
143
146
  - spec/spec_helper.rb