state_machine 1.1.2 → 1.2.0

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.
Files changed (240) hide show
  1. data/.gitignore +7 -11
  2. data/.travis.yml +49 -7
  3. data/Appraisals +255 -87
  4. data/CHANGELOG.md +30 -0
  5. data/README.md +142 -21
  6. data/Rakefile +1 -11
  7. data/examples/Gemfile +5 -0
  8. data/examples/Gemfile.lock +14 -0
  9. data/examples/auto_shop.rb +2 -0
  10. data/examples/car.rb +2 -0
  11. data/examples/doc/AutoShop.html +2856 -0
  12. data/examples/doc/AutoShop_state.png +0 -0
  13. data/examples/doc/Car.html +919 -0
  14. data/examples/doc/Car_state.png +0 -0
  15. data/examples/doc/TrafficLight.html +2230 -0
  16. data/examples/doc/TrafficLight_state.png +0 -0
  17. data/examples/doc/Vehicle.html +7921 -0
  18. data/examples/doc/Vehicle_state.png +0 -0
  19. data/examples/doc/_index.html +136 -0
  20. data/examples/doc/class_list.html +47 -0
  21. data/examples/doc/css/common.css +1 -0
  22. data/examples/doc/css/full_list.css +55 -0
  23. data/examples/doc/css/style.css +322 -0
  24. data/examples/doc/file_list.html +46 -0
  25. data/examples/doc/frames.html +13 -0
  26. data/examples/doc/index.html +136 -0
  27. data/examples/doc/js/app.js +205 -0
  28. data/examples/doc/js/full_list.js +173 -0
  29. data/examples/doc/js/jquery.js +16 -0
  30. data/examples/doc/method_list.html +734 -0
  31. data/examples/doc/top-level-namespace.html +105 -0
  32. data/examples/rails-rest/migration.rb +1 -5
  33. data/examples/rails-rest/view__form.html.erb +34 -0
  34. data/examples/rails-rest/view_edit.html.erb +2 -21
  35. data/examples/rails-rest/view_index.html.erb +6 -4
  36. data/examples/rails-rest/view_new.html.erb +2 -11
  37. data/examples/rails-rest/view_show.html.erb +5 -3
  38. data/examples/traffic_light.rb +2 -0
  39. data/examples/vehicle.rb +2 -0
  40. data/gemfiles/active_model-3.0.0.gemfile.lock +9 -6
  41. data/gemfiles/active_model-3.0.5.gemfile.lock +10 -7
  42. data/gemfiles/active_model-3.1.1.gemfile.lock +12 -10
  43. data/gemfiles/{active_model-3.2.0.gemfile → active_model-3.2.1.gemfile} +1 -1
  44. data/gemfiles/{graphviz-0.9.0.gemfile → active_model-3.2.12.gemfile} +1 -1
  45. data/gemfiles/active_model-3.2.12.gemfile.lock +36 -0
  46. data/gemfiles/{active_record-3.2.0.gemfile → active_model-3.2.13.rc1.gemfile} +1 -2
  47. data/gemfiles/active_model-3.2.13.rc1.gemfile.lock +36 -0
  48. data/gemfiles/active_model-4.0.0.gemfile +9 -0
  49. data/gemfiles/active_model-4.0.0.gemfile.lock +78 -0
  50. data/gemfiles/active_record-2.0.0.gemfile +2 -1
  51. data/gemfiles/active_record-2.0.0.gemfile.lock +15 -6
  52. data/gemfiles/active_record-2.0.5.gemfile +2 -1
  53. data/gemfiles/active_record-2.0.5.gemfile.lock +15 -6
  54. data/gemfiles/active_record-2.1.0.gemfile +2 -1
  55. data/gemfiles/active_record-2.1.0.gemfile.lock +15 -6
  56. data/gemfiles/active_record-2.1.2.gemfile +2 -1
  57. data/gemfiles/active_record-2.1.2.gemfile.lock +15 -6
  58. data/gemfiles/active_record-2.2.3.gemfile +2 -1
  59. data/gemfiles/active_record-2.2.3.gemfile.lock +15 -6
  60. data/gemfiles/active_record-2.3.12.gemfile +2 -1
  61. data/gemfiles/active_record-2.3.12.gemfile.lock +15 -6
  62. data/gemfiles/active_record-2.3.5.gemfile +9 -0
  63. data/gemfiles/active_record-2.3.5.gemfile.lock +39 -0
  64. data/gemfiles/active_record-3.0.0.gemfile +2 -1
  65. data/gemfiles/active_record-3.0.0.gemfile.lock +18 -11
  66. data/gemfiles/active_record-3.0.5.gemfile +2 -1
  67. data/gemfiles/active_record-3.0.5.gemfile.lock +19 -12
  68. data/gemfiles/active_record-3.1.1.gemfile +2 -1
  69. data/gemfiles/active_record-3.1.1.gemfile.lock +22 -16
  70. data/gemfiles/active_record-3.2.12.gemfile +9 -0
  71. data/gemfiles/active_record-3.2.12.gemfile.lock +51 -0
  72. data/gemfiles/active_record-3.2.13.rc1.gemfile +9 -0
  73. data/gemfiles/active_record-3.2.13.rc1.gemfile.lock +51 -0
  74. data/gemfiles/active_record-4.0.0.gemfile +11 -0
  75. data/gemfiles/active_record-4.0.0.gemfile.lock +83 -0
  76. data/gemfiles/data_mapper-0.10.2.gemfile +1 -0
  77. data/gemfiles/data_mapper-0.10.2.gemfile.lock +13 -9
  78. data/gemfiles/data_mapper-0.9.11.gemfile +1 -0
  79. data/gemfiles/data_mapper-0.9.11.gemfile.lock +31 -7
  80. data/gemfiles/data_mapper-0.9.4.gemfile.lock +25 -14
  81. data/gemfiles/data_mapper-0.9.7.gemfile +1 -0
  82. data/gemfiles/data_mapper-0.9.7.gemfile.lock +27 -15
  83. data/gemfiles/data_mapper-1.0.0.gemfile.lock +20 -17
  84. data/gemfiles/data_mapper-1.0.1.gemfile.lock +20 -17
  85. data/gemfiles/data_mapper-1.0.2.gemfile.lock +20 -17
  86. data/gemfiles/data_mapper-1.1.0.gemfile.lock +19 -16
  87. data/gemfiles/data_mapper-1.2.0.gemfile.lock +19 -16
  88. data/gemfiles/default.gemfile.lock +8 -5
  89. data/gemfiles/graphviz-0.9.17.gemfile +7 -0
  90. data/gemfiles/graphviz-0.9.17.gemfile.lock +29 -0
  91. data/gemfiles/graphviz-0.9.21.gemfile.lock +7 -4
  92. data/gemfiles/graphviz-1.0.0.gemfile.lock +7 -4
  93. data/gemfiles/graphviz-1.0.3.gemfile +7 -0
  94. data/gemfiles/graphviz-1.0.3.gemfile.lock +29 -0
  95. data/gemfiles/graphviz-1.0.8.gemfile +7 -0
  96. data/gemfiles/graphviz-1.0.8.gemfile.lock +29 -0
  97. data/gemfiles/mongo_mapper-0.10.0.gemfile +1 -0
  98. data/gemfiles/mongo_mapper-0.10.0.gemfile.lock +14 -11
  99. data/gemfiles/mongo_mapper-0.11.1.gemfile +7 -0
  100. data/gemfiles/mongo_mapper-0.11.1.gemfile.lock +44 -0
  101. data/gemfiles/mongo_mapper-0.11.2.gemfile +9 -0
  102. data/gemfiles/mongo_mapper-0.11.2.gemfile.lock +48 -0
  103. data/gemfiles/mongo_mapper-0.12.0.gemfile +9 -0
  104. data/gemfiles/mongo_mapper-0.12.0.gemfile.lock +48 -0
  105. data/gemfiles/mongo_mapper-0.5.5.gemfile.lock +7 -4
  106. data/gemfiles/mongo_mapper-0.5.8.gemfile.lock +7 -4
  107. data/gemfiles/mongo_mapper-0.6.0.gemfile.lock +7 -4
  108. data/gemfiles/mongo_mapper-0.6.10.gemfile.lock +7 -4
  109. data/gemfiles/mongo_mapper-0.7.0.gemfile.lock +7 -4
  110. data/gemfiles/mongo_mapper-0.7.5.gemfile.lock +7 -4
  111. data/gemfiles/mongo_mapper-0.8.0.gemfile.lock +7 -4
  112. data/gemfiles/mongo_mapper-0.8.3.gemfile.lock +7 -4
  113. data/gemfiles/mongo_mapper-0.8.4.gemfile.lock +7 -4
  114. data/gemfiles/mongo_mapper-0.8.6.gemfile.lock +7 -4
  115. data/gemfiles/mongo_mapper-0.9.0.gemfile.lock +7 -4
  116. data/gemfiles/mongoid-2.0.0.gemfile +2 -0
  117. data/gemfiles/mongoid-2.0.0.gemfile.lock +22 -18
  118. data/gemfiles/mongoid-2.1.4.gemfile +2 -0
  119. data/gemfiles/mongoid-2.1.4.gemfile.lock +21 -17
  120. data/gemfiles/mongoid-2.2.4.gemfile +2 -0
  121. data/gemfiles/mongoid-2.2.4.gemfile.lock +21 -17
  122. data/gemfiles/mongoid-2.3.3.gemfile +2 -0
  123. data/gemfiles/mongoid-2.3.3.gemfile.lock +21 -17
  124. data/gemfiles/mongoid-2.4.0.gemfile +9 -0
  125. data/gemfiles/mongoid-2.4.0.gemfile.lock +47 -0
  126. data/gemfiles/mongoid-2.4.10.gemfile +9 -0
  127. data/gemfiles/mongoid-2.4.10.gemfile.lock +47 -0
  128. data/gemfiles/mongoid-2.5.2.gemfile +9 -0
  129. data/gemfiles/mongoid-2.5.2.gemfile.lock +47 -0
  130. data/gemfiles/mongoid-2.6.0.gemfile +9 -0
  131. data/gemfiles/mongoid-2.6.0.gemfile.lock +47 -0
  132. data/gemfiles/mongoid-3.0.0.gemfile +8 -0
  133. data/gemfiles/mongoid-3.0.0.gemfile.lock +45 -0
  134. data/gemfiles/mongoid-3.0.22.gemfile +8 -0
  135. data/gemfiles/mongoid-3.0.22.gemfile.lock +45 -0
  136. data/gemfiles/mongoid-3.1.0.gemfile +8 -0
  137. data/gemfiles/mongoid-3.1.0.gemfile.lock +45 -0
  138. data/gemfiles/sequel-2.11.0.gemfile +2 -1
  139. data/gemfiles/sequel-2.11.0.gemfile.lock +11 -6
  140. data/gemfiles/sequel-2.12.0.gemfile +2 -1
  141. data/gemfiles/sequel-2.12.0.gemfile.lock +11 -6
  142. data/gemfiles/sequel-2.8.0.gemfile +2 -1
  143. data/gemfiles/sequel-2.8.0.gemfile.lock +11 -6
  144. data/gemfiles/sequel-3.0.0.gemfile +2 -1
  145. data/gemfiles/sequel-3.0.0.gemfile.lock +11 -6
  146. data/gemfiles/sequel-3.10.0.gemfile +9 -0
  147. data/gemfiles/sequel-3.10.0.gemfile.lock +33 -0
  148. data/gemfiles/sequel-3.13.0.gemfile +2 -1
  149. data/gemfiles/sequel-3.13.0.gemfile.lock +11 -6
  150. data/gemfiles/sequel-3.14.0.gemfile +2 -1
  151. data/gemfiles/sequel-3.14.0.gemfile.lock +11 -6
  152. data/gemfiles/sequel-3.23.0.gemfile +2 -1
  153. data/gemfiles/sequel-3.23.0.gemfile.lock +11 -6
  154. data/gemfiles/sequel-3.24.0.gemfile +2 -1
  155. data/gemfiles/sequel-3.24.0.gemfile.lock +11 -6
  156. data/gemfiles/sequel-3.29.0.gemfile +2 -1
  157. data/gemfiles/sequel-3.29.0.gemfile.lock +11 -6
  158. data/gemfiles/sequel-3.34.0.gemfile +9 -0
  159. data/gemfiles/sequel-3.34.0.gemfile.lock +33 -0
  160. data/gemfiles/sequel-3.35.0.gemfile +9 -0
  161. data/gemfiles/sequel-3.35.0.gemfile.lock +33 -0
  162. data/gemfiles/sequel-3.4.0.gemfile +9 -0
  163. data/gemfiles/sequel-3.4.0.gemfile.lock +33 -0
  164. data/gemfiles/sequel-3.44.0.gemfile +9 -0
  165. data/gemfiles/sequel-3.44.0.gemfile.lock +33 -0
  166. data/lib/state_machine.rb +6 -0
  167. data/lib/state_machine/branch.rb +9 -8
  168. data/lib/state_machine/callback.rb +2 -2
  169. data/lib/state_machine/core.rb +10 -0
  170. data/lib/state_machine/core_ext.rb +1 -0
  171. data/lib/state_machine/eval_helpers.rb +5 -3
  172. data/lib/state_machine/event.rb +17 -6
  173. data/lib/state_machine/graph.rb +92 -0
  174. data/lib/state_machine/integrations.rb +13 -1
  175. data/lib/state_machine/integrations/active_model.rb +14 -20
  176. data/lib/state_machine/integrations/active_model/observer.rb +3 -3
  177. data/lib/state_machine/integrations/active_model/observer_update.rb +42 -0
  178. data/lib/state_machine/integrations/active_record.rb +52 -25
  179. data/lib/state_machine/integrations/active_record/locale.rb +1 -1
  180. data/lib/state_machine/integrations/active_record/versions.rb +1 -17
  181. data/lib/state_machine/integrations/base.rb +15 -6
  182. data/lib/state_machine/integrations/data_mapper.rb +98 -35
  183. data/lib/state_machine/integrations/data_mapper/versions.rb +46 -8
  184. data/lib/state_machine/integrations/mongo_mapper.rb +39 -12
  185. data/lib/state_machine/integrations/mongo_mapper/locale.rb +1 -1
  186. data/lib/state_machine/integrations/mongo_mapper/versions.rb +3 -20
  187. data/lib/state_machine/integrations/mongoid.rb +52 -14
  188. data/lib/state_machine/integrations/mongoid/locale.rb +1 -1
  189. data/lib/state_machine/integrations/mongoid/versions.rb +52 -26
  190. data/lib/state_machine/integrations/sequel.rb +82 -33
  191. data/lib/state_machine/integrations/sequel/versions.rb +19 -44
  192. data/lib/state_machine/machine.rb +99 -59
  193. data/lib/state_machine/machine_collection.rb +1 -2
  194. data/lib/state_machine/macro_methods.rb +29 -0
  195. data/lib/state_machine/node_collection.rb +1 -1
  196. data/lib/state_machine/state.rb +18 -10
  197. data/lib/state_machine/state_context.rb +2 -2
  198. data/lib/state_machine/transition.rb +8 -1
  199. data/lib/state_machine/transition_collection.rb +2 -1
  200. data/lib/state_machine/version.rb +1 -1
  201. data/lib/state_machine/yard.rb +8 -0
  202. data/lib/state_machine/yard/handlers.rb +12 -0
  203. data/lib/state_machine/yard/handlers/base.rb +32 -0
  204. data/lib/state_machine/yard/handlers/event.rb +25 -0
  205. data/lib/state_machine/yard/handlers/machine.rb +344 -0
  206. data/lib/state_machine/yard/handlers/state.rb +25 -0
  207. data/lib/state_machine/yard/handlers/transition.rb +47 -0
  208. data/lib/state_machine/yard/templates.rb +3 -0
  209. data/lib/state_machine/yard/templates/default/class/html/setup.rb +30 -0
  210. data/lib/state_machine/yard/templates/default/class/html/state_machines.erb +12 -0
  211. data/lib/tasks/state_machine.rb +2 -1
  212. data/lib/yard-state_machine.rb +2 -0
  213. data/state_machine.gemspec +4 -3
  214. data/test/files/switch.rb +4 -0
  215. data/test/test_helper.rb +5 -0
  216. data/test/unit/branch_test.rb +117 -36
  217. data/test/unit/callback_test.rb +5 -2
  218. data/test/unit/eval_helpers_test.rb +49 -1
  219. data/test/unit/event_collection_test.rb +3 -1
  220. data/test/unit/event_test.rb +182 -12
  221. data/test/unit/graph_test.rb +98 -0
  222. data/test/unit/integrations/active_model_test.rb +82 -12
  223. data/test/unit/integrations/active_record_test.rb +393 -37
  224. data/test/unit/integrations/base_test.rb +7 -2
  225. data/test/unit/integrations/data_mapper_test.rb +326 -72
  226. data/test/unit/integrations/mongo_mapper_test.rb +338 -44
  227. data/test/unit/integrations/mongoid_test.rb +606 -98
  228. data/test/unit/integrations/sequel_test.rb +429 -102
  229. data/test/unit/integrations_test.rb +28 -6
  230. data/test/unit/machine_collection_test.rb +6 -2
  231. data/test/unit/machine_test.rb +134 -82
  232. data/test/unit/node_collection_test.rb +2 -2
  233. data/test/unit/path_test.rb +1 -1
  234. data/test/unit/state_test.rb +65 -21
  235. data/test/unit/transition_collection_test.rb +43 -23
  236. data/test/unit/transition_test.rb +8 -2
  237. metadata +303 -221
  238. data/gemfiles/active_model-3.2.0.gemfile.lock +0 -32
  239. data/gemfiles/active_record-3.2.0.gemfile.lock +0 -43
  240. data/gemfiles/graphviz-0.9.0.gemfile.lock +0 -26
@@ -2,7 +2,8 @@
2
2
 
3
3
  source "http://www.rubygems.org"
4
4
 
5
- gem "sqlite3-ruby", "1.3.1"
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
6
7
  gem "sequel", "3.14.0"
7
8
 
8
9
  gemspec :path=>"../"
@@ -1,18 +1,22 @@
1
1
  PATH
2
2
  remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
3
  specs:
4
- state_machine (1.1.2)
4
+ state_machine (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://www.rubygems.org/
8
8
  specs:
9
- appraisal (0.4.0)
9
+ appraisal (0.4.1)
10
10
  bundler
11
11
  rake
12
- rake (0.9.2.2)
13
- rcov (0.9.11)
14
- rcov (0.9.11-java)
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
15
  sequel (3.14.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
16
20
  sqlite3-ruby (1.3.1)
17
21
 
18
22
  PLATFORMS
@@ -21,8 +25,9 @@ PLATFORMS
21
25
 
22
26
  DEPENDENCIES
23
27
  appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
24
29
  rake
25
- rcov
26
30
  sequel (= 3.14.0)
31
+ simplecov
27
32
  sqlite3-ruby (= 1.3.1)
28
33
  state_machine!
@@ -2,7 +2,8 @@
2
2
 
3
3
  source "http://www.rubygems.org"
4
4
 
5
- gem "sqlite3-ruby", "1.3.1"
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
6
7
  gem "sequel", "3.23.0"
7
8
 
8
9
  gemspec :path=>"../"
@@ -1,18 +1,22 @@
1
1
  PATH
2
2
  remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
3
  specs:
4
- state_machine (1.1.2)
4
+ state_machine (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://www.rubygems.org/
8
8
  specs:
9
- appraisal (0.4.0)
9
+ appraisal (0.4.1)
10
10
  bundler
11
11
  rake
12
- rake (0.9.2.2)
13
- rcov (0.9.11)
14
- rcov (0.9.11-java)
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
15
  sequel (3.23.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
16
20
  sqlite3-ruby (1.3.1)
17
21
 
18
22
  PLATFORMS
@@ -21,8 +25,9 @@ PLATFORMS
21
25
 
22
26
  DEPENDENCIES
23
27
  appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
24
29
  rake
25
- rcov
26
30
  sequel (= 3.23.0)
31
+ simplecov
27
32
  sqlite3-ruby (= 1.3.1)
28
33
  state_machine!
@@ -2,7 +2,8 @@
2
2
 
3
3
  source "http://www.rubygems.org"
4
4
 
5
- gem "sqlite3-ruby", "1.3.1"
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
6
7
  gem "sequel", "3.24.0"
7
8
 
8
9
  gemspec :path=>"../"
@@ -1,18 +1,22 @@
1
1
  PATH
2
2
  remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
3
  specs:
4
- state_machine (1.1.2)
4
+ state_machine (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://www.rubygems.org/
8
8
  specs:
9
- appraisal (0.4.0)
9
+ appraisal (0.4.1)
10
10
  bundler
11
11
  rake
12
- rake (0.9.2.2)
13
- rcov (0.9.11)
14
- rcov (0.9.11-java)
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
15
  sequel (3.24.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
16
20
  sqlite3-ruby (1.3.1)
17
21
 
18
22
  PLATFORMS
@@ -21,8 +25,9 @@ PLATFORMS
21
25
 
22
26
  DEPENDENCIES
23
27
  appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
24
29
  rake
25
- rcov
26
30
  sequel (= 3.24.0)
31
+ simplecov
27
32
  sqlite3-ruby (= 1.3.1)
28
33
  state_machine!
@@ -2,7 +2,8 @@
2
2
 
3
3
  source "http://www.rubygems.org"
4
4
 
5
- gem "sqlite3-ruby", "1.3.1"
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
6
7
  gem "sequel", "3.29.0"
7
8
 
8
9
  gemspec :path=>"../"
@@ -1,18 +1,22 @@
1
1
  PATH
2
2
  remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
3
  specs:
4
- state_machine (1.1.2)
4
+ state_machine (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://www.rubygems.org/
8
8
  specs:
9
- appraisal (0.4.0)
9
+ appraisal (0.4.1)
10
10
  bundler
11
11
  rake
12
- rake (0.9.2.2)
13
- rcov (0.9.11)
14
- rcov (0.9.11-java)
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
15
  sequel (3.29.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
16
20
  sqlite3-ruby (1.3.1)
17
21
 
18
22
  PLATFORMS
@@ -21,8 +25,9 @@ PLATFORMS
21
25
 
22
26
  DEPENDENCIES
23
27
  appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
24
29
  rake
25
- rcov
26
30
  sequel (= 3.29.0)
31
+ simplecov
27
32
  sqlite3-ruby (= 1.3.1)
28
33
  state_machine!
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://www.rubygems.org"
4
+
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
7
+ gem "sequel", "3.34.0"
8
+
9
+ gemspec :path=>"../"
@@ -0,0 +1,33 @@
1
+ PATH
2
+ remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
+ specs:
4
+ state_machine (1.2.0)
5
+
6
+ GEM
7
+ remote: http://www.rubygems.org/
8
+ specs:
9
+ appraisal (0.4.1)
10
+ bundler
11
+ rake
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
+ sequel (3.34.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
20
+ sqlite3-ruby (1.3.1)
21
+
22
+ PLATFORMS
23
+ java
24
+ ruby
25
+
26
+ DEPENDENCIES
27
+ appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
29
+ rake
30
+ sequel (= 3.34.0)
31
+ simplecov
32
+ sqlite3-ruby (= 1.3.1)
33
+ state_machine!
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://www.rubygems.org"
4
+
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
7
+ gem "sequel", "3.35.0"
8
+
9
+ gemspec :path=>"../"
@@ -0,0 +1,33 @@
1
+ PATH
2
+ remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
+ specs:
4
+ state_machine (1.2.0)
5
+
6
+ GEM
7
+ remote: http://www.rubygems.org/
8
+ specs:
9
+ appraisal (0.4.1)
10
+ bundler
11
+ rake
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
+ sequel (3.35.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
20
+ sqlite3-ruby (1.3.1)
21
+
22
+ PLATFORMS
23
+ java
24
+ ruby
25
+
26
+ DEPENDENCIES
27
+ appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
29
+ rake
30
+ sequel (= 3.35.0)
31
+ simplecov
32
+ sqlite3-ruby (= 1.3.1)
33
+ state_machine!
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://www.rubygems.org"
4
+
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
7
+ gem "sequel", "3.4.0"
8
+
9
+ gemspec :path=>"../"
@@ -0,0 +1,33 @@
1
+ PATH
2
+ remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
+ specs:
4
+ state_machine (1.2.0)
5
+
6
+ GEM
7
+ remote: http://www.rubygems.org/
8
+ specs:
9
+ appraisal (0.4.1)
10
+ bundler
11
+ rake
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
+ sequel (3.4.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
20
+ sqlite3-ruby (1.3.1)
21
+
22
+ PLATFORMS
23
+ java
24
+ ruby
25
+
26
+ DEPENDENCIES
27
+ appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
29
+ rake
30
+ sequel (= 3.4.0)
31
+ simplecov
32
+ sqlite3-ruby (= 1.3.1)
33
+ state_machine!
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://www.rubygems.org"
4
+
5
+ gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw]
6
+ gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby
7
+ gem "sequel", "3.44.0"
8
+
9
+ gemspec :path=>"../"
@@ -0,0 +1,33 @@
1
+ PATH
2
+ remote: /home/aaron/Projects/Personal/pluginaweek/state_machine
3
+ specs:
4
+ state_machine (1.2.0)
5
+
6
+ GEM
7
+ remote: http://www.rubygems.org/
8
+ specs:
9
+ appraisal (0.4.1)
10
+ bundler
11
+ rake
12
+ jdbc-sqlite3 (3.7.2)
13
+ multi_json (1.6.1)
14
+ rake (10.0.3)
15
+ sequel (3.44.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
20
+ sqlite3-ruby (1.3.1)
21
+
22
+ PLATFORMS
23
+ java
24
+ ruby
25
+
26
+ DEPENDENCIES
27
+ appraisal (~> 0.4.0)
28
+ jdbc-sqlite3 (= 3.7.2)
29
+ rake
30
+ sequel (= 3.44.0)
31
+ simplecov
32
+ sqlite3-ruby (= 1.3.1)
33
+ state_machine!
@@ -1,2 +1,8 @@
1
+ # By default, requiring "state_machine" means that both the core implementation
2
+ # *and* extensions to the Ruby core (Class in particular) will be pulled in.
3
+ #
4
+ # If you want to skip the Ruby core extensions, simply require "state_machine/core"
5
+ # and extend StateMachine::MacroMethods in your class. See the README for more
6
+ # information.
1
7
  require 'state_machine/core'
2
8
  require 'state_machine/core_ext'
@@ -140,10 +140,8 @@ module StateMachine
140
140
  #
141
141
  # Each edge will be labeled with the name of the event that would cause the
142
142
  # transition.
143
- #
144
- # The collection of edges generated on the graph will be returned.
145
143
  def draw(graph, event, valid_states)
146
- state_requirements.inject([]) do |edges, state_requirement|
144
+ state_requirements.each do |state_requirement|
147
145
  # From states determined based on the known valid states
148
146
  from_states = state_requirement[:from].filter(valid_states)
149
147
 
@@ -160,11 +158,11 @@ module StateMachine
160
158
  # Generate an edge between each from and to state
161
159
  from_states.each do |from_state|
162
160
  from_state = from_state ? from_state.to_s : 'nil'
163
- edges << graph.add_edge(from_state, loopback ? from_state : to_state, :label => event.to_s)
161
+ graph.add_edges(from_state, loopback ? from_state : to_state, :label => event.to_s)
164
162
  end
165
-
166
- edges
167
163
  end
164
+
165
+ true
168
166
  end
169
167
 
170
168
  protected
@@ -175,9 +173,12 @@ module StateMachine
175
173
  assert_exclusive_keys(options, whitelist_option, blacklist_option)
176
174
 
177
175
  if options.include?(whitelist_option)
178
- WhitelistMatcher.new(options[whitelist_option])
176
+ value = options[whitelist_option]
177
+ value.is_a?(Matcher) ? value : WhitelistMatcher.new(options[whitelist_option])
179
178
  elsif options.include?(blacklist_option)
180
- BlacklistMatcher.new(options[blacklist_option])
179
+ value = options[blacklist_option]
180
+ raise ArgumentError, ":#{blacklist_option} option cannot use matchers; use :#{whitelist_option} instead" if value.is_a?(Matcher)
181
+ BlacklistMatcher.new(value)
181
182
  else
182
183
  AllMatcher.instance
183
184
  end
@@ -175,9 +175,9 @@ module StateMachine
175
175
  # method passes the terminator.
176
176
  def run_methods(object, context = {}, index = 0, *args, &block)
177
177
  if type == :around
178
- if method = @methods[index]
178
+ if current_method = @methods[index]
179
179
  yielded = false
180
- evaluate_method(object, method, *args) do
180
+ evaluate_method(object, current_method, *args) do
181
181
  yielded = true
182
182
  run_methods(object, context, index + 1, *args, &block)
183
183
  end
@@ -1,2 +1,12 @@
1
+ module StateMachine
2
+ # Graphing extensions aren't required, so they're loaded when referenced
3
+ autoload :Graph, 'state_machine/graph'
4
+ end
5
+
6
+ # Load all of the core implementation required to use state_machine. This
7
+ # includes:
8
+ # * StateMachine::MacroMethods which adds the state_machine DSL to your class
9
+ # * A set of initializers for setting state_machine defaults based on the current
10
+ # running environment (such as within Rails)
1
11
  require 'state_machine/macro_methods'
2
12
  require 'state_machine/initializers'