workflow 2.0.2 → 3.0.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.
data/lib/workflow.rb CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  require 'workflow/specification'
4
4
 
5
- # See also README.markdown for documentation
5
+ # See also README for documentation
6
6
  module Workflow
7
7
  module ClassMethods
8
8
  attr_reader :workflow_spec
@@ -61,8 +61,8 @@ module Workflow
61
61
  state.events.flat.each do |event|
62
62
  event_name = event.name
63
63
  module_eval do
64
- define_method "#{event_name}!".to_sym do |*args|
65
- process_event!(event_name, *args)
64
+ define_method "#{event_name}!".to_sym do |*args, **kwargs|
65
+ process_event!(event_name, *args, **kwargs)
66
66
  end
67
67
 
68
68
  define_method "can_#{event_name}?" do
@@ -94,7 +94,7 @@ module Workflow
94
94
  @halted_because
95
95
  end
96
96
 
97
- def process_event!(name, *args)
97
+ def process_event!(name, *args, **kwargs)
98
98
  event = current_state.events.first_applicable(name, self)
99
99
  raise NoTransitionAllowed.new(
100
100
  "There is no event #{name.to_sym} defined for the #{current_state} state") \
@@ -107,26 +107,26 @@ module Workflow
107
107
  from = current_state
108
108
  to = spec.states[event.transitions_to]
109
109
 
110
- run_before_transition(from, to, name, *args)
110
+ run_before_transition(from, to, name, *args, **kwargs)
111
111
  return false if @halted
112
112
 
113
113
  begin
114
- return_value = run_action(event.action, *args) || run_action_callback(event.name, *args)
114
+ return_value = run_action(event.action, *args, **kwargs) || run_action_callback(event.name, *args, **kwargs)
115
115
  rescue StandardError => e
116
- run_on_error(e, from, to, name, *args)
116
+ run_on_error(e, from, to, name, *args, **kwargs)
117
117
  end
118
118
 
119
119
  return false if @halted
120
120
 
121
- run_on_transition(from, to, name, *args)
121
+ run_on_transition(from, to, name, *args, **kwargs)
122
122
 
123
- run_on_exit(from, to, name, *args)
123
+ run_on_exit(from, to, name, *args, **kwargs)
124
124
 
125
125
  transition_value = persist_workflow_state to.to_s
126
126
 
127
- run_on_entry(to, from, name, *args)
127
+ run_on_entry(to, from, name, *args, **kwargs)
128
128
 
129
- run_after_transition(from, to, name, *args)
129
+ run_after_transition(from, to, name, *args, **kwargs)
130
130
 
131
131
  return_value.nil? ? transition_value : return_value
132
132
  end
@@ -169,31 +169,31 @@ module Workflow
169
169
  end
170
170
  end
171
171
 
172
- def run_before_transition(from, to, event, *args)
173
- instance_exec(from.name, to.name, event, *args, &spec.before_transition_proc) if
172
+ def run_before_transition(from, to, event, *args, **kwargs)
173
+ instance_exec(from.name, to.name, event, *args, **kwargs, &spec.before_transition_proc) if
174
174
  spec.before_transition_proc
175
175
  end
176
176
 
177
- def run_on_error(error, from, to, event, *args)
177
+ def run_on_error(error, from, to, event, *args, **kwargs)
178
178
  if spec.on_error_proc
179
- instance_exec(error, from.name, to.name, event, *args, &spec.on_error_proc)
179
+ instance_exec(error, from.name, to.name, event, *args, **kwargs, &spec.on_error_proc)
180
180
  halt(error.message)
181
181
  else
182
182
  raise error
183
183
  end
184
184
  end
185
185
 
186
- def run_on_transition(from, to, event, *args)
187
- instance_exec(from.name, to.name, event, *args, &spec.on_transition_proc) if spec.on_transition_proc
186
+ def run_on_transition(from, to, event, *args, **kwargs)
187
+ instance_exec(from.name, to.name, event, *args, **kwargs, &spec.on_transition_proc) if spec.on_transition_proc
188
188
  end
189
189
 
190
- def run_after_transition(from, to, event, *args)
191
- instance_exec(from.name, to.name, event, *args, &spec.after_transition_proc) if
190
+ def run_after_transition(from, to, event, *args, **kwargs)
191
+ instance_exec(from.name, to.name, event, *args, **kwargs, &spec.after_transition_proc) if
192
192
  spec.after_transition_proc
193
193
  end
194
194
 
195
- def run_action(action, *args)
196
- instance_exec(*args, &action) if action
195
+ def run_action(action, *args, **kwargs)
196
+ instance_exec(*args, **kwargs, &action) if action
197
197
  end
198
198
 
199
199
  def has_callback?(action)
@@ -206,27 +206,27 @@ module Workflow
206
206
  self.private_methods(false).map(&:to_sym).include?(action)
207
207
  end
208
208
 
209
- def run_action_callback(action_name, *args)
209
+ def run_action_callback(action_name, *args, **kwargs)
210
210
  action = action_name.to_sym
211
- self.send(action, *args) if has_callback?(action)
211
+ self.send(action, *args, **kwargs) if has_callback?(action)
212
212
  end
213
213
 
214
- def run_on_entry(state, prior_state, triggering_event, *args)
214
+ def run_on_entry(state, prior_state, triggering_event, *args, **kwargs)
215
215
  if state.on_entry
216
- instance_exec(prior_state.name, triggering_event, *args, &state.on_entry)
216
+ instance_exec(prior_state.name, triggering_event, *args, **kwargs, &state.on_entry)
217
217
  else
218
218
  hook_name = "on_#{state}_entry"
219
- self.send hook_name, prior_state, triggering_event, *args if has_callback?(hook_name)
219
+ self.send hook_name, prior_state, triggering_event, *args, **kwargs if has_callback?(hook_name)
220
220
  end
221
221
  end
222
222
 
223
- def run_on_exit(state, new_state, triggering_event, *args)
223
+ def run_on_exit(state, new_state, triggering_event, *args, **kwargs)
224
224
  if state
225
225
  if state.on_exit
226
- instance_exec(new_state.name, triggering_event, *args, &state.on_exit)
226
+ instance_exec(new_state.name, triggering_event, *args, **kwargs, &state.on_exit)
227
227
  else
228
228
  hook_name = "on_#{state}_exit"
229
- self.send hook_name, new_state, triggering_event, *args if has_callback?(hook_name)
229
+ self.send hook_name, new_state, triggering_event, *args, **kwargs if has_callback?(hook_name)
230
230
  end
231
231
  end
232
232
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Dobriakov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-31 00:00:00.000000000 Z
11
+ date: 2022-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -107,9 +107,9 @@ email:
107
107
  executables: []
108
108
  extensions: []
109
109
  extra_rdoc_files:
110
- - README.markdown
110
+ - README.adoc
111
111
  files:
112
- - README.markdown
112
+ - README.adoc
113
113
  - lib/workflow.rb
114
114
  - lib/workflow/draw.rb
115
115
  - lib/workflow/errors.rb
@@ -122,7 +122,7 @@ homepage: https://github.com/geekq/workflow
122
122
  licenses:
123
123
  - MIT
124
124
  metadata: {}
125
- post_install_message:
125
+ post_install_message:
126
126
  rdoc_options: []
127
127
  require_paths:
128
128
  - lib
@@ -130,15 +130,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - ">="
132
132
  - !ruby/object:Gem::Version
133
- version: '2.3'
133
+ version: '2.7'
134
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  requirements: []
140
- rubygems_version: 3.0.1
141
- signing_key:
140
+ rubygems_version: 3.1.2
141
+ signing_key:
142
142
  specification_version: 4
143
143
  summary: A replacement for acts_as_state_machine.
144
144
  test_files: []