asynchro 0.1.2 → 0.1.3

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.2
1
+ 0.1.3
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.2"
8
+ s.version = "0.1.3"
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"]
@@ -22,8 +22,8 @@ class Asynchro::State
22
22
  # argument is the state name and should be a Symbol. A block must be
23
23
  # provided. If this state is already declared, the given block will be
24
24
  # executed after the previous declarations.
25
- def declare(state)
26
- (@states[state.to_sym] ||= [ ]) << Proc.new
25
+ def declare(state, &block)
26
+ (@states[state.to_sym] ||= [ ]) << block
27
27
  end
28
28
 
29
29
  # Returns true if a particular state has been declared, false otherwise.
@@ -41,22 +41,30 @@ class Asynchro::State
41
41
  procs = [ lambda { finish! } ] unless (procs)
42
42
  end
43
43
 
44
- procs and procs.each(&:call) or STDERR.puts "WARNING: No state #{state} defined."
44
+ if (procs)
45
+ procs.each(&:call)
46
+ else
47
+ STDERR.puts "WARNING: No state #{state} defined."
48
+ end
45
49
  end
46
50
 
47
51
  protected
48
52
  # This lets the object instance function as a simple DSL by allowing
49
53
  # arbitrary method names to map to various functions.
50
- def method_missing(name, &block)
54
+ def method_missing(name, *args, &block)
51
55
  name_s = name.to_s
52
56
 
53
- case (name)
54
- when /\?$/
55
- self.declared?(name_s.sub(/\?$/, ''))
56
- when /\!$/
57
- self.run!(name_s.sub(/\!$/, ''))
57
+ if (args.empty?)
58
+ case (name)
59
+ when /\?$/
60
+ self.declared?(name_s.sub(/\?$/, ''))
61
+ when /\!$/
62
+ self.run!(name_s.sub(/\!$/, ''))
63
+ else
64
+ self.declare(name, &block)
65
+ end
58
66
  else
59
- self.declare(name, &block)
67
+ super(name, *args)
60
68
  end
61
69
  end
62
70
  end
@@ -49,6 +49,7 @@ class TestAsynchroState < Test::Unit::TestCase
49
49
 
50
50
  def test_implicit_names
51
51
  ran = [ ]
52
+ tester = self
52
53
 
53
54
  Asynchro::State.new do
54
55
  start do
@@ -81,6 +82,20 @@ class TestAsynchroState < Test::Unit::TestCase
81
82
  end
82
83
  end
83
84
 
85
+ def test_configurable_binding
86
+ result = nil
87
+
88
+ Asynchro::State.new do |map|
89
+ map.start do
90
+ result = self.example_method?
91
+ end
92
+ end
93
+
94
+ assert_eventually(5) do
95
+ assert_equal :yes, result
96
+ end
97
+ end
98
+
84
99
  def test_arbitrary_names
85
100
  state = Asynchro::State.new
86
101
  ran = [ ]
@@ -115,4 +130,9 @@ class TestAsynchroState < Test::Unit::TestCase
115
130
  assert_equal [ :start, :state1, :state2, :state3, :finish ], ran
116
131
  end
117
132
  end
133
+
134
+ protected
135
+ def example_method?
136
+ :yes
137
+ end
118
138
  end
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.2
4
+ version: 0.1.3
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: &2158245720 !ruby/object:Gem::Requirement
16
+ requirement: &2162379240 !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: *2158245720
24
+ version_requirements: *2162379240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &2158245200 !ruby/object:Gem::Requirement
27
+ requirement: &2162378640 !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: *2158245200
35
+ version_requirements: *2162378640
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &2158244680 !ruby/object:Gem::Requirement
38
+ requirement: &2162377820 !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: *2158244680
46
+ version_requirements: *2162377820
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