tiny_state_machine 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e73ac446ec51e6ca9fda676416868b29f4250a1
4
- data.tar.gz: a674b37787627af75f5cd9dac8736d5200db6599
3
+ metadata.gz: 047364a5b900bcbedfd987555bd54645c465c1eb
4
+ data.tar.gz: c261a785cee721df9c0a541595469316fe1ecad9
5
5
  SHA512:
6
- metadata.gz: d9ec2246715eb7890ca29417de863c94da29fd022a73a4bb0be3d1d73a40fae3c46f9ab0a46edd0aa6a5bd1fef734230f5ba06f066deac5cfb196730ce2aa8d9
7
- data.tar.gz: 317ab0c573459371109fef951c6bb3b57ead149fbe474a780d2256658912719a2cb8907b1d7b98e9a08850f974421d5145ec7ec5ff69b911bcbc3e0d313c6542
6
+ metadata.gz: a8986e8d01ba7ae6dab57563943a6ed34c316b9297453bac7ab030af77595b9219491e0d566401388ce76aed3c70dbc1b4491d3700b6e37965b712aeae2bf95d
7
+ data.tar.gz: 1f7c801b835ef62b4705b6d03798329df084e731fb05f8f6b4a2e39c8fc56b9ffbdbb38f9aa3552b46180ea2325b144886bb7bc056ea2cd35ccb4f60b33348fa
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .DS_Store
1
2
  *.gem
2
3
  *.rbc
3
4
  .bundle
data/README.md CHANGED
@@ -25,6 +25,7 @@ sm = TinyStateMachine::Machine.new :in_store do |sm|
25
25
  sm.event :use, :used => :used
26
26
  sm.event :break, :used => :broken
27
27
  sm.event :fix, :broken => :used
28
+ sm.event :earthquake, :any => :destroyed
28
29
  sm.on_state_change do |event, from_state, to_state|
29
30
  puts "new state = #{to_state}"
30
31
  end
@@ -47,6 +48,11 @@ sm.state
47
48
  sm.trigger(:use)
48
49
  # new state = used
49
50
  # => :used
51
+
52
+ # some events can come from :any state
53
+ sm.trigger(:earthquake)
54
+ # new state = destroyed
55
+ # => :destroyed
50
56
  ```
51
57
 
52
58
  ## Tests
@@ -37,6 +37,9 @@ module TinyStateMachine
37
37
  end
38
38
 
39
39
  # declare events
40
+ # you can use :any in the hash key for an event that can come from any state
41
+ # @example
42
+ # sm.event :error, :any => :error
40
43
  #
41
44
  # @param event [String or Symbol] state name
42
45
  # @param hash [Hash] a Hash in the form : old_state => new_state
@@ -55,7 +58,7 @@ module TinyStateMachine
55
58
  # @raise [InvalidEvent] if the event is invalid (incorrect state)
56
59
  # @return the new state the machine is in
57
60
  def trigger(event)
58
- e = @events.find { |e| e[:event] == event && e[:from] == @state }
61
+ e = @events.find { |e| e[:event] == event && (e[:from] == @state || e[:from] == :any) }
59
62
  raise InvalidEvent, "Invalid event '#{event}' from state '#{@state}'" if e.nil?
60
63
  old_state = @state
61
64
  @state = e[:to]
@@ -1,3 +1,3 @@
1
1
  module TinyStateMachine
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -55,6 +55,14 @@ module TinyStateMachine
55
55
  sm.trigger(:buy)
56
56
  expect(callback).to have_received(:change).with(:buy, :in_store, :new)
57
57
  end
58
+
59
+ it "should handle events from :any state" do
60
+ sm = TinyStateMachine::Machine.new :in_store do |sm|
61
+ sm.event :buy, :any => :new
62
+ end
63
+ sm.trigger(:buy)
64
+ expect(sm.state).to eql :new
65
+ end
58
66
  end
59
67
 
60
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_state_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geoffroy Montel
@@ -65,7 +65,6 @@ files:
65
65
  - LICENSE.txt
66
66
  - README.md
67
67
  - Rakefile
68
- - lib/.DS_Store
69
68
  - lib/tiny_state_machine.rb
70
69
  - lib/tiny_state_machine/version.rb
71
70
  - spec/spec_helper.rb
data/lib/.DS_Store DELETED
Binary file