rpromise 0.1.1 → 0.1.2

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: 71a0304c401834de12b087ed0616ad637b7ad3a6
4
- data.tar.gz: b38e756b3ccb4dcc60dbdffe866987f29ad34314
3
+ metadata.gz: 6a717f4226d359019498c9ce4aa6f47bffb97d89
4
+ data.tar.gz: df6fbd05f8e20065d2f9a1ff17110810b8e34cfc
5
5
  SHA512:
6
- metadata.gz: 6b09464f4d17c111bafae20fcbdcff7d000b8edcf715e1bbb320ebb07e84c4bb14b0e2d1b53b5000bb079aadb00c8e3aa2ab14ded7f89a2d4e45b23a4f7f8486
7
- data.tar.gz: f2f7a02741c54b6e7452131b9fc4d54bb5d1b652f1a29f1fa9a483e894aa60baffa061c450f55d13ed0a96ba2499ef34bd9d94aa19993ba55c0d711e5e9f66bb
6
+ metadata.gz: 2d8305e2ecae4c6aa80150b6294ac93b38ab1b836ab4114c821b2d731f072a2fd3ecc13f30e2f32a91ac92979789f7dde06b3a1f7a370be3ef2a0a5c684a7eff
7
+ data.tar.gz: 4852082d68d72be33c8897e31192da03ca4354ed22fa86974925da93838d40c9ae55e37e21cb154e87960ef16f682ea39e6f4d9e279963dfaf0e8221c40b8c80
data/README.md CHANGED
@@ -137,6 +137,18 @@ end, lambda do |err|
137
137
  end)
138
138
  ```
139
139
 
140
+ ### Convert method to promise
141
+
142
+ You can convert any method into a promise
143
+
144
+ ```ruby
145
+ promise = Rpromise.from_method(100, :to_s)
146
+
147
+ promise.then(lambda do |value|
148
+ value[0...2] # => "10"
149
+ end)
150
+ ```
151
+
140
152
  ## Contributing
141
153
 
142
154
  1. Fork it
@@ -1,3 +1,3 @@
1
1
  class Rpromise
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/rpromise.rb CHANGED
@@ -69,6 +69,12 @@ class Rpromise
69
69
  end
70
70
  end
71
71
 
72
+ def self.from_method(obj, method_name, *args, &block)
73
+ Rpromise.new do |resolve, reject|
74
+ resolve.call(obj.method(method_name).call(*args,&block))
75
+ end
76
+ end
77
+
72
78
  protected
73
79
 
74
80
  def is_valid_block?(arg)
@@ -243,4 +243,55 @@ describe ::Rpromise do
243
243
  end
244
244
  end
245
245
 
246
+ describe '.from_method' do
247
+ MyObject = Struct.new(:store) do
248
+ def method_with_args(*args)
249
+ return args
250
+ end
251
+ def method_with_block
252
+ yield
253
+ end
254
+ end
255
+
256
+ before(:each) do
257
+ @obj = MyObject.new('Hello World')
258
+ end
259
+
260
+ it 'converts method to a running promise' do
261
+ lambda_value = nil
262
+ lock = true
263
+ promise = Rpromise.from_method(@obj, :store)
264
+ promise.then(lambda do |store_value|
265
+ lambda_value = store_value
266
+ lock = false
267
+ end)
268
+ loop { break unless lock }
269
+ expect(lambda_value).to eq 'Hello World'
270
+ end
271
+
272
+ it 'passes the method arguments' do
273
+ promise = Rpromise.from_method(@obj, :method_with_args, 1, 2, 3, 'test')
274
+ lambda_value = nil
275
+ lock = true
276
+ promise.then(lambda do |value|
277
+ lambda_value = value
278
+ lock = false
279
+ end)
280
+ loop { break unless lock }
281
+ expect(lambda_value).to eq [1,2,3,'test']
282
+ end
283
+
284
+ it 'passes the method block' do
285
+ promise = Rpromise.from_method(@obj, :method_with_block) { 'Block' }
286
+ lambda_value = nil
287
+ lock = true
288
+ promise.then(lambda do |value|
289
+ lambda_value = value
290
+ lock = false
291
+ end)
292
+ loop { break unless lock }
293
+ expect(lambda_value).to eq 'Block'
294
+ end
295
+ end
296
+
246
297
  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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Molinari