rpromise 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +12 -0
- data/lib/rpromise/version.rb +1 -1
- data/lib/rpromise.rb +6 -0
- data/spec/lib/rpromise_spec.rb +51 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a717f4226d359019498c9ce4aa6f47bffb97d89
|
4
|
+
data.tar.gz: df6fbd05f8e20065d2f9a1ff17110810b8e34cfc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/rpromise/version.rb
CHANGED
data/lib/rpromise.rb
CHANGED
data/spec/lib/rpromise_spec.rb
CHANGED
@@ -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
|