Narnach-future 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -8,8 +8,8 @@ calls.
8
8
  An example:
9
9
  f = Future.new { sleep 5; 123}
10
10
  puts f * 5 #=> 615
11
- Theis future will take 5 seconds to run, then 123 is returned.
12
- The call f.*(5) will block until the future is done.
11
+ This future will take 5 seconds to run, then 123 is returned.
12
+ The call to f.* will block until the future has a return value.
13
13
 
14
14
  Another example:
15
15
  f1 = Future.new { sleep 5; 10}
@@ -20,6 +20,11 @@ Here it only takes 5 seconds to calculate the sum instead of the 9 it would take
20
20
 
21
21
  == Recent changes
22
22
 
23
+ === Version 0.2.1
24
+ * Cleared up the docs a little
25
+ * Futures can take arguments and pass them to their Thread
26
+ * Docfix: fixed typo
27
+
23
28
  === Version 0.2.0
24
29
  * Replaced Future Module with Future class. The old syntax is no longer supported.
25
30
  * Replaced one-time use of eval with undef_method.
data/future.gemspec CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.name = 'future'
4
4
  s.summary = "A naieve implementation of futures"
5
5
  s.description = "A naieve implementation of futures"
6
- s.version = '0.2.0'
6
+ s.version = '0.2.1'
7
7
  s.date = '2008-12-10'
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Wes Oldenbeuving"]
data/lib/future.rb CHANGED
@@ -5,23 +5,30 @@
5
5
  #
6
6
  # An example:
7
7
  # f = Future.new { sleep 5; 123}
8
- # puts f * 5 #=> 615
9
- # Theis future will take 5 seconds to run, then 123 is returned.
10
- # The call f.*(5) will block until the future is done.
8
+ # f * 5 # => 615
9
+ # This future will take 5 seconds to run, then 123 is returned.
10
+ # The call to f.* will block until the future has a return value.
11
11
  #
12
12
  # Another example:
13
13
  # f1 = Future.new { sleep 5; 10}
14
14
  # f2 = Future.new { sleep 3; 20}
15
15
  # f3 = Future.new { sleep 1; 30}
16
- # puts f3 + f2 + f1
16
+ # f3 + f2 + f1 # => 60
17
17
  # Here it only takes 5 seconds to calculate the sum instead of the 9 it would take when done sequentially.
18
+ #
19
+ # Futures have their own thread and thus don't have access to scope they were created from.
20
+ # If you do require values from outside the future, pass them to the Future when creating it:
21
+ #
22
+ # one = 1
23
+ # two = 2
24
+ # sum = Future.new(one, two) {|a,b| a + b} # => 3
18
25
  class Future
19
26
  (instance_methods - %w[__send__ __id__ object_id]).each do |meth|
20
27
  undef_method meth
21
28
  end
22
29
 
23
- def initialize(&block)
24
- @thread = Thread.new(&block)
30
+ def initialize(*args, &block)
31
+ @thread = Thread.new(*args, &block)
25
32
  end
26
33
 
27
34
  def method_missing(*args, &block)
data/spec/future_spec.rb CHANGED
@@ -19,4 +19,16 @@ describe Future, '.new' do
19
19
  diff.should < 0.3
20
20
  diff.should > 0.1
21
21
  end
22
+
23
+ it 'should have its own scope' do
24
+ now = Time.now
25
+ f1 = Future.new { now }
26
+ f1.should_not == now
27
+ end
28
+
29
+ it 'should be able to pass variables to scope of the future' do
30
+ now = Time.now
31
+ f1 = Future.new(now) { |time| time + 10 }
32
+ f1.should == now + 10
33
+ end
22
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Narnach-future
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wes Oldenbeuving