asynchro 0.1.2 → 0.1.3
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 +1 -1
- data/asynchro.gemspec +1 -1
- data/lib/asynchro/state.rb +18 -10
- data/test/test_asynchro_state.rb +20 -0
- metadata +7 -7
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/asynchro.gemspec
CHANGED
data/lib/asynchro/state.rb
CHANGED
@@ -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] ||= [ ]) <<
|
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
|
-
|
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
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
67
|
+
super(name, *args)
|
60
68
|
end
|
61
69
|
end
|
62
70
|
end
|
data/test/test_asynchro_state.rb
CHANGED
@@ -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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *2162379240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
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: *
|
35
|
+
version_requirements: *2162378640
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
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: *
|
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
|