asynchro 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
data/asynchro.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "asynchro"
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Scott Tadman"]
@@ -1,6 +1,6 @@
1
1
  module Asynchro::Extensions
2
2
  def async_tracker(&block)
3
- Asynchro::Tracker.new(&block)
3
+ Asynchro::Tracker.new(self, &block)
4
4
  end
5
5
 
6
6
  def async_state(&block)
@@ -1,8 +1,9 @@
1
1
  class Asynchro::Tracker
2
2
  # Creates a new tracker. If a block is given, this block is called with
3
3
  # the new instance as an argument, and the tracker is automatically run.
4
- def initialize
4
+ def initialize(context = self)
5
5
  @sequence = 0
6
+ @context = context
6
7
 
7
8
  if (block_given?)
8
9
  instance_eval(&Proc.new)
@@ -14,14 +15,14 @@ class Asynchro::Tracker
14
15
  # called if this object is initialized without a supplied block as in that
15
16
  # case, this would have been called already.
16
17
  def run!
17
- @procs and @procs.each(&:call)
18
+ @procs and @procs.each { |proc| @context.instance_eval { proc.call } }
18
19
  end
19
20
 
20
21
  # Executes this block when all the actions to be performed have checked in
21
22
  # as finsished.
22
- def finish
23
+ def finish(&block)
23
24
  @finish ||= [ ]
24
- @finish << Proc.new
25
+ @finish << block
25
26
  end
26
27
 
27
28
  # Performs an action. The supplied block will be called with a callback
@@ -41,7 +42,7 @@ class Asynchro::Tracker
41
42
  end
42
43
 
43
44
  if (@blocks.empty?)
44
- @finish and @finish.each(&:call)
45
+ @finish and @finish.each { |proc| @context.instance_eval { proc.call } }
45
46
  end
46
47
  end
47
48
  }
@@ -5,12 +5,21 @@ class TestAsynchroExtensions < Test::Unit::TestCase
5
5
 
6
6
  def test_async_tracker_implicit
7
7
  tracker = nil
8
+ finished = false
8
9
 
9
10
  async_tracker do
10
- tracker = self
11
+ perform do |callback|
12
+ tracker = self
13
+ callback.call
14
+ end
15
+
16
+ finish do
17
+ finished = true
18
+ end
11
19
  end
12
20
 
13
21
  assert_equal Asynchro::Tracker, tracker.class
22
+ assert_equal true, finished
14
23
  end
15
24
 
16
25
  def test_async_state_explicit
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asynchro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-09-26 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &2162379240 !ruby/object:Gem::Requirement
16
+ requirement: &2155053420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2162379240
24
+ version_requirements: *2155053420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &2162378640 !ruby/object:Gem::Requirement
27
+ requirement: &2155052560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2162378640
35
+ version_requirements: *2155052560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &2162377820 !ruby/object:Gem::Requirement
38
+ requirement: &2155051700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2162377820
46
+ version_requirements: *2155051700
47
47
  description: Provides a number of tools to help make developing and testing asynchronous
48
48
  applications more manageable.
49
49
  email: github@tadman.ca