asynchro 0.1.3 → 0.1.4

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.
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