finite_machine 0.11.2 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +80 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +679 -624
  5. data/lib/finite_machine.rb +35 -45
  6. data/lib/finite_machine/async_call.rb +5 -21
  7. data/lib/finite_machine/callable.rb +4 -4
  8. data/lib/finite_machine/catchable.rb +24 -14
  9. data/lib/finite_machine/choice_merger.rb +20 -20
  10. data/lib/finite_machine/const.rb +16 -0
  11. data/lib/finite_machine/definition.rb +3 -3
  12. data/lib/finite_machine/dsl.rb +98 -151
  13. data/lib/finite_machine/env.rb +4 -2
  14. data/lib/finite_machine/event_definition.rb +7 -15
  15. data/lib/finite_machine/{events_chain.rb → events_map.rb} +40 -53
  16. data/lib/finite_machine/hook_event.rb +60 -61
  17. data/lib/finite_machine/hooks.rb +44 -36
  18. data/lib/finite_machine/listener.rb +2 -2
  19. data/lib/finite_machine/logger.rb +5 -4
  20. data/lib/finite_machine/{event_queue.rb → message_queue.rb} +76 -32
  21. data/lib/finite_machine/observer.rb +71 -34
  22. data/lib/finite_machine/safety.rb +16 -14
  23. data/lib/finite_machine/state_definition.rb +3 -5
  24. data/lib/finite_machine/state_machine.rb +93 -76
  25. data/lib/finite_machine/state_parser.rb +55 -83
  26. data/lib/finite_machine/subscribers.rb +2 -2
  27. data/lib/finite_machine/threadable.rb +3 -1
  28. data/lib/finite_machine/transition.rb +34 -34
  29. data/lib/finite_machine/transition_builder.rb +23 -32
  30. data/lib/finite_machine/transition_event.rb +12 -11
  31. data/lib/finite_machine/two_phase_lock.rb +8 -6
  32. data/lib/finite_machine/undefined_transition.rb +5 -6
  33. data/lib/finite_machine/version.rb +2 -2
  34. metadata +58 -142
  35. data/.gitignore +0 -18
  36. data/.rspec +0 -5
  37. data/.ruby-gemset +0 -1
  38. data/.ruby-version +0 -1
  39. data/.travis.yml +0 -26
  40. data/Gemfile +0 -15
  41. data/Rakefile +0 -8
  42. data/assets/finite_machine_logo.png +0 -0
  43. data/examples/atm.rb +0 -45
  44. data/examples/bug_system.rb +0 -145
  45. data/finite_machine.gemspec +0 -23
  46. data/lib/finite_machine/async_proxy.rb +0 -30
  47. data/spec/integration/system_spec.rb +0 -95
  48. data/spec/spec_helper.rb +0 -33
  49. data/spec/unit/alias_target_spec.rb +0 -108
  50. data/spec/unit/async_events_spec.rb +0 -138
  51. data/spec/unit/callable/call_spec.rb +0 -113
  52. data/spec/unit/callbacks_spec.rb +0 -942
  53. data/spec/unit/can_spec.rb +0 -98
  54. data/spec/unit/choice_spec.rb +0 -331
  55. data/spec/unit/define_spec.rb +0 -55
  56. data/spec/unit/definition_spec.rb +0 -115
  57. data/spec/unit/event_names_spec.rb +0 -19
  58. data/spec/unit/event_queue_spec.rb +0 -52
  59. data/spec/unit/events_chain/add_spec.rb +0 -25
  60. data/spec/unit/events_chain/cancel_transitions_spec.rb +0 -22
  61. data/spec/unit/events_chain/choice_transition_spec.rb +0 -28
  62. data/spec/unit/events_chain/clear_spec.rb +0 -15
  63. data/spec/unit/events_chain/events_spec.rb +0 -18
  64. data/spec/unit/events_chain/inspect_spec.rb +0 -24
  65. data/spec/unit/events_chain/match_transition_spec.rb +0 -37
  66. data/spec/unit/events_chain/move_to_spec.rb +0 -48
  67. data/spec/unit/events_chain/states_for_spec.rb +0 -17
  68. data/spec/unit/events_spec.rb +0 -459
  69. data/spec/unit/handlers_spec.rb +0 -152
  70. data/spec/unit/hook_event/build_spec.rb +0 -15
  71. data/spec/unit/hook_event/eql_spec.rb +0 -36
  72. data/spec/unit/hook_event/infer_default_name_spec.rb +0 -13
  73. data/spec/unit/hook_event/initialize_spec.rb +0 -25
  74. data/spec/unit/hook_event/notify_spec.rb +0 -14
  75. data/spec/unit/hooks/call_spec.rb +0 -24
  76. data/spec/unit/hooks/clear_spec.rb +0 -16
  77. data/spec/unit/hooks/inspect_spec.rb +0 -17
  78. data/spec/unit/hooks/register_spec.rb +0 -22
  79. data/spec/unit/if_unless_spec.rb +0 -353
  80. data/spec/unit/initial_spec.rb +0 -222
  81. data/spec/unit/inspect_spec.rb +0 -17
  82. data/spec/unit/is_spec.rb +0 -55
  83. data/spec/unit/log_transitions_spec.rb +0 -30
  84. data/spec/unit/logger_spec.rb +0 -38
  85. data/spec/unit/respond_to_spec.rb +0 -38
  86. data/spec/unit/state_parser/inspect_spec.rb +0 -25
  87. data/spec/unit/state_parser/parse_spec.rb +0 -59
  88. data/spec/unit/states_spec.rb +0 -34
  89. data/spec/unit/subscribers_spec.rb +0 -42
  90. data/spec/unit/target_spec.rb +0 -225
  91. data/spec/unit/terminated_spec.rb +0 -95
  92. data/spec/unit/transition/check_conditions_spec.rb +0 -54
  93. data/spec/unit/transition/inspect_spec.rb +0 -25
  94. data/spec/unit/transition/matches_spec.rb +0 -23
  95. data/spec/unit/transition/states_spec.rb +0 -31
  96. data/spec/unit/transition/to_state_spec.rb +0 -27
  97. data/spec/unit/trigger_spec.rb +0 -22
  98. data/spec/unit/undefined_transition/eql_spec.rb +0 -17
  99. data/tasks/console.rake +0 -11
  100. data/tasks/coverage.rake +0 -11
  101. data/tasks/spec.rake +0 -29
@@ -1,6 +1,6 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require 'monitor'
3
+ require "monitor"
4
4
 
5
5
  module FiniteMachine
6
6
  # A class responsibile for storage of event subscribers
@@ -1,4 +1,6 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "two_phase_lock"
2
4
 
3
5
  module FiniteMachine
4
6
  # A mixin to allow instance methods to be synchronized
@@ -1,7 +1,21 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "callable"
4
+ require_relative "threadable"
2
5
 
3
6
  module FiniteMachine
4
7
  # Class describing a transition associated with a given event
8
+ #
9
+ # The {Transition} is created with the `event` helper.
10
+ #
11
+ # @example Converting event into {Transition}
12
+ # event :go, :red => :green
13
+ #
14
+ # will be translated to
15
+ #
16
+ # Transition.new(context, :go, {states: {:red => :green}})
17
+ #
18
+ # @api private
5
19
  class Transition
6
20
  include Threadable
7
21
 
@@ -11,11 +25,8 @@ module FiniteMachine
11
25
  # Predicates before transitioning
12
26
  attr_threadsafe :conditions
13
27
 
14
- # The current state machine
15
- attr_threadsafe :machine
16
-
17
- # Check if transition should be cancelled
18
- attr_threadsafe :cancelled
28
+ # The current state machine context
29
+ attr_threadsafe :context
19
30
 
20
31
  # All states for this transition event
21
32
  attr_threadsafe :states
@@ -23,33 +34,25 @@ module FiniteMachine
23
34
  # Initialize a Transition
24
35
  #
25
36
  # @example
26
- # attributes = {parsed_states: {green: :yellow}}
27
- # Transition.new(machine, attributes)
37
+ # attributes = {states: {green: :yellow}}
38
+ # Transition.new(context, :go, attributes)
28
39
  #
29
- # @param [StateMachine] machine
40
+ # @param [Object] context
41
+ # the context this transition evaluets conditions in
30
42
  #
31
43
  # @param [Hash] attrs
32
44
  #
33
45
  # @return [Transition]
34
46
  #
35
47
  # @api public
36
- def initialize(machine, attrs = {})
37
- @machine = machine
38
- @name = attrs[:name]
48
+ def initialize(context, name, attrs = {})
49
+ @context = context
50
+ @name = name
39
51
  @states = attrs.fetch(:states, {})
40
52
  @if = Array(attrs.fetch(:if, []))
41
53
  @unless = Array(attrs.fetch(:unless, []))
42
54
  @conditions = make_conditions
43
- @cancelled = attrs.fetch(:cancelled, false)
44
- end
45
-
46
- # Check if this transition is cancelled or not
47
- #
48
- # @return [Boolean]
49
- #
50
- # @api public
51
- def cancelled?
52
- @cancelled
55
+ freeze
53
56
  end
54
57
 
55
58
  # Reduce conditions
@@ -72,7 +75,7 @@ module FiniteMachine
72
75
  # @api private
73
76
  def check_conditions(*args)
74
77
  conditions.all? do |condition|
75
- condition.call(machine.target, *args)
78
+ condition.call(context, *args)
76
79
  end
77
80
  end
78
81
 
@@ -82,7 +85,7 @@ module FiniteMachine
82
85
  # the from state to match against
83
86
  #
84
87
  # @example
85
- # transition = Transition.new(machine, states: {:green => :red})
88
+ # transition = Transition.new(context, states: {:green => :red})
86
89
  # transition.matches?(:green) # => true
87
90
  #
88
91
  # @return [Boolean]
@@ -99,7 +102,7 @@ module FiniteMachine
99
102
  # the from state to check
100
103
  #
101
104
  # @example
102
- # transition = Transition.new(machine, states: {:green => :red})
105
+ # transition = Transition.new(context, states: {:green => :red})
103
106
  # transition.to_state(:green) # => :red
104
107
  #
105
108
  # @return [Symbol]
@@ -107,18 +110,14 @@ module FiniteMachine
107
110
  #
108
111
  # @api public
109
112
  def to_state(from)
110
- if cancelled?
111
- from
112
- else
113
- states[from] || states[ANY_STATE]
114
- end
113
+ states[from] || states[ANY_STATE]
115
114
  end
116
115
 
117
116
  # Return transition name
118
117
  #
119
118
  # @example
120
- # transition = Transition.new(machine, name: :go)
121
- # transition.to_s # => 'go'
119
+ # transition = Transition.new(context, name: :go)
120
+ # transition.to_s # => "go"
122
121
  #
123
122
  # @return [String]
124
123
  #
@@ -133,8 +132,9 @@ module FiniteMachine
133
132
  #
134
133
  # @api public
135
134
  def inspect
136
- transitions = @states.map { |from, to| "#{from} -> #{to}" }.join(', ')
137
- "<##{self.class} @name=#{@name}, @transitions=#{transitions}, @when=#{@conditions}>"
135
+ transitions = @states.map { |from, to| "#{from} -> #{to}" }.join(", ")
136
+ "<##{self.class} @name=#{@name}, @transitions=#{transitions}, " \
137
+ "@when=#{@conditions}>"
138
138
  end
139
139
  end # Transition
140
140
  end # FiniteMachine
@@ -1,8 +1,9 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require 'finite_machine/state_parser'
4
- require 'finite_machine/event_definition'
5
- require 'finite_machine/state_definition'
3
+ require_relative "event_definition"
4
+ require_relative "state_definition"
5
+ require_relative "state_parser"
6
+ require_relative "transition"
6
7
 
7
8
  module FiniteMachine
8
9
  # A class reponsible for building transition out of parsed states
@@ -11,54 +12,44 @@ module FiniteMachine
11
12
  #
12
13
  # @api private
13
14
  class TransitionBuilder
14
- include Threadable
15
-
16
- # The current state machine
17
- attr_threadsafe :machine
18
-
19
- attr_threadsafe :attributes
20
-
21
- attr_threadsafe :event_definition
22
-
23
- attr_threadsafe :state_definition
24
-
25
15
  # Initialize a TransitionBuilder
26
16
  #
27
17
  # @example
28
18
  # TransitionBuilder.new(machine, {})
29
19
  #
30
20
  # @api public
31
- def initialize(machine, attributes = {})
32
- @machine = machine
21
+ def initialize(machine, name, attributes = {})
22
+ @machine = machine
23
+ @name = name
33
24
  @attributes = attributes
25
+
34
26
  @event_definition = EventDefinition.new(machine)
35
27
  @state_definition = StateDefinition.new(machine)
36
28
  end
37
29
 
38
- # Creates transitions for the states
30
+ # Converts user transitions into internal {Transition} representation
39
31
  #
40
32
  # @example
41
33
  # transition_builder.call([:green, :yellow] => :red)
42
34
  #
43
- # @param [Hash[Symbol]] states
44
- # The states to extract
35
+ # @param [Hash[Symbol]] transitions
36
+ # The transitions to extract states from
45
37
  #
46
38
  # @return [self]
47
39
  #
48
40
  # @api public
49
- def call(states)
50
- StateParser.new(states).parse do |from, to|
51
- attributes.merge!(states: { from => to })
52
- transition = Transition.new(machine, attributes)
53
- name = attributes[:name]
54
- silent = attributes.fetch(:silent, false)
55
-
56
- machine.events_chain.add(name, transition)
57
-
58
- unless machine.respond_to?(name)
59
- event_definition.apply(name, silent)
41
+ def call(transitions)
42
+ StateParser.parse(transitions) do |from, to|
43
+ transition = Transition.new(@machine.env.target, @name,
44
+ @attributes.merge(states: { from => to }))
45
+ silent = @attributes.fetch(:silent, false)
46
+ @machine.events_map.add(@name, transition)
47
+ next unless @machine.auto_methods?
48
+
49
+ unless @machine.respond_to?(@name)
50
+ @event_definition.apply(@name, silent)
60
51
  end
61
- state_definition.apply({ from => to })
52
+ @state_definition.apply(from => to)
62
53
  end
63
54
  self
64
55
  end
@@ -1,4 +1,6 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "threadable"
2
4
 
3
5
  module FiniteMachine
4
6
  # A class representing a callback transition event
@@ -7,38 +9,37 @@ module FiniteMachine
7
9
  #
8
10
  # @api private
9
11
  class TransitionEvent
10
- include Threadable
11
-
12
12
  # This event from state name
13
13
  #
14
14
  # @return [Object]
15
15
  #
16
16
  # @api public
17
- attr_threadsafe :from
17
+ attr_reader :from
18
18
 
19
19
  # This event to state name
20
20
  #
21
21
  # @return [Object]
22
22
  #
23
23
  # @api public
24
- attr_threadsafe :to
24
+ attr_reader :to
25
25
 
26
26
  # This event name
27
27
  #
28
28
  # @api public
29
- attr_threadsafe :name
29
+ attr_reader :name
30
30
 
31
31
  # Build a transition event
32
32
  #
33
- # @param [FiniteMachine::Transition] transition
33
+ # @param [String] event_name
34
+ # @param [String] from
35
+ # @param [String] to
34
36
  #
35
37
  # @return [self]
36
38
  #
37
39
  # @api private
38
- # def initialize(transition, *data)
39
- def initialize(hook_event, to)
40
- @name = hook_event.event_name
41
- @from = hook_event.from
40
+ def initialize(event_name, from, to)
41
+ @name = event_name
42
+ @from = from
42
43
  @to = to
43
44
  freeze
44
45
  end
@@ -1,4 +1,6 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
3
+ require "sync"
2
4
 
3
5
  module FiniteMachine
4
6
  # Mixin to provide lock to a {Threadable}
@@ -10,9 +12,10 @@ module FiniteMachine
10
12
  # @return [Sync]
11
13
  #
12
14
  # @api private
13
- def sync
14
- @sync = Sync.new
15
+ def lock
16
+ @lock = Sync.new
15
17
  end
18
+ module_function :lock
16
19
 
17
20
  # Synchronize given block of code
18
21
  #
@@ -23,9 +26,8 @@ module FiniteMachine
23
26
  #
24
27
  # @api private
25
28
  def synchronize(mode, &block)
26
- sync.synchronize(mode, &block)
29
+ lock.synchronize(mode, &block)
27
30
  end
28
-
29
- module_function :sync, :synchronize
31
+ module_function :synchronize
30
32
  end # TwoPhaseLock
31
33
  end # FiniteMachine
@@ -1,19 +1,18 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module FiniteMachine
4
4
  # Stand in for lack of matching transition.
5
5
  #
6
- # Used internally by {EventsChain}
6
+ # Used internally by {EventsMap}
7
7
  #
8
8
  # @api private
9
9
  class UndefinedTransition
10
- include Threadable
11
-
12
10
  # Initialize an undefined transition
13
11
  #
14
12
  # @api private
15
13
  def initialize(name)
16
- self.name = name
14
+ @name = name
15
+ freeze
17
16
  end
18
17
 
19
18
  def to_state(from)
@@ -26,7 +25,7 @@ module FiniteMachine
26
25
 
27
26
  protected
28
27
 
29
- attr_threadsafe :name
28
+ attr_reader :name
30
29
 
31
30
  end # UndefinedTransition
32
31
  end # FiniteMachine
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module FiniteMachine
4
- VERSION = "0.11.2"
4
+ VERSION = "0.14.0"
5
5
  end
metadata CHANGED
@@ -1,82 +1,102 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finite_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-30 00:00:00.000000000 Z
11
+ date: 2020-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: concurrent-ruby
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
19
+ version: '1.0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sync
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.5'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - '>='
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - '>='
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
41
69
  description: A minimal finite state machine with a straightforward syntax. You can
42
70
  quickly model states, add callbacks and use object-oriented techniques to integrate
43
71
  with ORMs.
44
72
  email:
45
- - ''
73
+ - piotr@piotrmurach.com
46
74
  executables: []
47
75
  extensions: []
48
- extra_rdoc_files: []
76
+ extra_rdoc_files:
77
+ - README.md
78
+ - CHANGELOG.md
79
+ - LICENSE.txt
49
80
  files:
50
- - .gitignore
51
- - .rspec
52
- - .ruby-gemset
53
- - .ruby-version
54
- - .travis.yml
55
81
  - CHANGELOG.md
56
- - Gemfile
57
82
  - LICENSE.txt
58
83
  - README.md
59
- - Rakefile
60
- - assets/finite_machine_logo.png
61
- - examples/atm.rb
62
- - examples/bug_system.rb
63
- - finite_machine.gemspec
64
84
  - lib/finite_machine.rb
65
85
  - lib/finite_machine/async_call.rb
66
- - lib/finite_machine/async_proxy.rb
67
86
  - lib/finite_machine/callable.rb
68
87
  - lib/finite_machine/catchable.rb
69
88
  - lib/finite_machine/choice_merger.rb
89
+ - lib/finite_machine/const.rb
70
90
  - lib/finite_machine/definition.rb
71
91
  - lib/finite_machine/dsl.rb
72
92
  - lib/finite_machine/env.rb
73
93
  - lib/finite_machine/event_definition.rb
74
- - lib/finite_machine/event_queue.rb
75
- - lib/finite_machine/events_chain.rb
94
+ - lib/finite_machine/events_map.rb
76
95
  - lib/finite_machine/hook_event.rb
77
96
  - lib/finite_machine/hooks.rb
78
97
  - lib/finite_machine/listener.rb
79
98
  - lib/finite_machine/logger.rb
99
+ - lib/finite_machine/message_queue.rb
80
100
  - lib/finite_machine/observer.rb
81
101
  - lib/finite_machine/safety.rb
82
102
  - lib/finite_machine/state_definition.rb
@@ -90,136 +110,32 @@ files:
90
110
  - lib/finite_machine/two_phase_lock.rb
91
111
  - lib/finite_machine/undefined_transition.rb
92
112
  - lib/finite_machine/version.rb
93
- - spec/integration/system_spec.rb
94
- - spec/spec_helper.rb
95
- - spec/unit/alias_target_spec.rb
96
- - spec/unit/async_events_spec.rb
97
- - spec/unit/callable/call_spec.rb
98
- - spec/unit/callbacks_spec.rb
99
- - spec/unit/can_spec.rb
100
- - spec/unit/choice_spec.rb
101
- - spec/unit/define_spec.rb
102
- - spec/unit/definition_spec.rb
103
- - spec/unit/event_names_spec.rb
104
- - spec/unit/event_queue_spec.rb
105
- - spec/unit/events_chain/add_spec.rb
106
- - spec/unit/events_chain/cancel_transitions_spec.rb
107
- - spec/unit/events_chain/choice_transition_spec.rb
108
- - spec/unit/events_chain/clear_spec.rb
109
- - spec/unit/events_chain/events_spec.rb
110
- - spec/unit/events_chain/inspect_spec.rb
111
- - spec/unit/events_chain/match_transition_spec.rb
112
- - spec/unit/events_chain/move_to_spec.rb
113
- - spec/unit/events_chain/states_for_spec.rb
114
- - spec/unit/events_spec.rb
115
- - spec/unit/handlers_spec.rb
116
- - spec/unit/hook_event/build_spec.rb
117
- - spec/unit/hook_event/eql_spec.rb
118
- - spec/unit/hook_event/infer_default_name_spec.rb
119
- - spec/unit/hook_event/initialize_spec.rb
120
- - spec/unit/hook_event/notify_spec.rb
121
- - spec/unit/hooks/call_spec.rb
122
- - spec/unit/hooks/clear_spec.rb
123
- - spec/unit/hooks/inspect_spec.rb
124
- - spec/unit/hooks/register_spec.rb
125
- - spec/unit/if_unless_spec.rb
126
- - spec/unit/initial_spec.rb
127
- - spec/unit/inspect_spec.rb
128
- - spec/unit/is_spec.rb
129
- - spec/unit/log_transitions_spec.rb
130
- - spec/unit/logger_spec.rb
131
- - spec/unit/respond_to_spec.rb
132
- - spec/unit/state_parser/inspect_spec.rb
133
- - spec/unit/state_parser/parse_spec.rb
134
- - spec/unit/states_spec.rb
135
- - spec/unit/subscribers_spec.rb
136
- - spec/unit/target_spec.rb
137
- - spec/unit/terminated_spec.rb
138
- - spec/unit/transition/check_conditions_spec.rb
139
- - spec/unit/transition/inspect_spec.rb
140
- - spec/unit/transition/matches_spec.rb
141
- - spec/unit/transition/states_spec.rb
142
- - spec/unit/transition/to_state_spec.rb
143
- - spec/unit/trigger_spec.rb
144
- - spec/unit/undefined_transition/eql_spec.rb
145
- - tasks/console.rake
146
- - tasks/coverage.rake
147
- - tasks/spec.rake
148
- homepage: http://peter-murach.github.io/finite_machine/
113
+ homepage: https://piotrmurach.github.io/finite_machine/
149
114
  licenses:
150
115
  - MIT
151
- metadata: {}
116
+ metadata:
117
+ allowed_push_host: https://rubygems.org
118
+ changelog_uri: https://github.com/piotrmurach/finite_machine/blob/master/CHANGELOG.md
119
+ documentation_uri: https://www.rubydoc.info/gems/finite_machine
120
+ homepage_uri: https://piotrmurach.github.io/finite_machine/
121
+ source_code_uri: https://github.com/piotrmurach/finite_machine
152
122
  post_install_message:
153
123
  rdoc_options: []
154
124
  require_paths:
155
125
  - lib
156
126
  required_ruby_version: !ruby/object:Gem::Requirement
157
127
  requirements:
158
- - - '>='
128
+ - - ">="
159
129
  - !ruby/object:Gem::Version
160
- version: '0'
130
+ version: 2.0.0
161
131
  required_rubygems_version: !ruby/object:Gem::Requirement
162
132
  requirements:
163
- - - '>='
133
+ - - ">="
164
134
  - !ruby/object:Gem::Version
165
135
  version: '0'
166
136
  requirements: []
167
- rubyforge_project:
168
- rubygems_version: 2.0.3
137
+ rubygems_version: 3.1.2
169
138
  signing_key:
170
139
  specification_version: 4
171
140
  summary: A minimal finite state machine with a straightforward syntax.
172
- test_files:
173
- - spec/integration/system_spec.rb
174
- - spec/spec_helper.rb
175
- - spec/unit/alias_target_spec.rb
176
- - spec/unit/async_events_spec.rb
177
- - spec/unit/callable/call_spec.rb
178
- - spec/unit/callbacks_spec.rb
179
- - spec/unit/can_spec.rb
180
- - spec/unit/choice_spec.rb
181
- - spec/unit/define_spec.rb
182
- - spec/unit/definition_spec.rb
183
- - spec/unit/event_names_spec.rb
184
- - spec/unit/event_queue_spec.rb
185
- - spec/unit/events_chain/add_spec.rb
186
- - spec/unit/events_chain/cancel_transitions_spec.rb
187
- - spec/unit/events_chain/choice_transition_spec.rb
188
- - spec/unit/events_chain/clear_spec.rb
189
- - spec/unit/events_chain/events_spec.rb
190
- - spec/unit/events_chain/inspect_spec.rb
191
- - spec/unit/events_chain/match_transition_spec.rb
192
- - spec/unit/events_chain/move_to_spec.rb
193
- - spec/unit/events_chain/states_for_spec.rb
194
- - spec/unit/events_spec.rb
195
- - spec/unit/handlers_spec.rb
196
- - spec/unit/hook_event/build_spec.rb
197
- - spec/unit/hook_event/eql_spec.rb
198
- - spec/unit/hook_event/infer_default_name_spec.rb
199
- - spec/unit/hook_event/initialize_spec.rb
200
- - spec/unit/hook_event/notify_spec.rb
201
- - spec/unit/hooks/call_spec.rb
202
- - spec/unit/hooks/clear_spec.rb
203
- - spec/unit/hooks/inspect_spec.rb
204
- - spec/unit/hooks/register_spec.rb
205
- - spec/unit/if_unless_spec.rb
206
- - spec/unit/initial_spec.rb
207
- - spec/unit/inspect_spec.rb
208
- - spec/unit/is_spec.rb
209
- - spec/unit/log_transitions_spec.rb
210
- - spec/unit/logger_spec.rb
211
- - spec/unit/respond_to_spec.rb
212
- - spec/unit/state_parser/inspect_spec.rb
213
- - spec/unit/state_parser/parse_spec.rb
214
- - spec/unit/states_spec.rb
215
- - spec/unit/subscribers_spec.rb
216
- - spec/unit/target_spec.rb
217
- - spec/unit/terminated_spec.rb
218
- - spec/unit/transition/check_conditions_spec.rb
219
- - spec/unit/transition/inspect_spec.rb
220
- - spec/unit/transition/matches_spec.rb
221
- - spec/unit/transition/states_spec.rb
222
- - spec/unit/transition/to_state_spec.rb
223
- - spec/unit/trigger_spec.rb
224
- - spec/unit/undefined_transition/eql_spec.rb
225
- has_rdoc:
141
+ test_files: []