rails-workflow 1.4.6.4 → 1.4.8.4
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.
- checksums.yaml +4 -4
- data/lib/workflow/event.rb +9 -2
- data/lib/workflow/specification.rb +14 -4
- data/lib/workflow/state.rb +4 -4
- data/lib/workflow/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41958ff514ac9776a7dcdc9a4ca9bdeff19c5207
|
4
|
+
data.tar.gz: 7503bd6d628ea7a37576db536a7dc57342d208ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9037c414fa9d537ec00bd97d22b18330531bb5cd6af225bd62c45df00fe62249ffce6acdd39ca194d135e83dc949089f9882dceba4f78a73ef059f93779251a9
|
7
|
+
data.tar.gz: ba52069e35a1637a99f4631492bd9dfe816f93a81aa42d751dfb9739c2295ce4e7183524b9c35a2afc051d422f19b11a2705878ed804c39560c0a8bef4abdba2
|
data/lib/workflow/event.rb
CHANGED
@@ -7,16 +7,23 @@ module Workflow
|
|
7
7
|
# @return [Array] Array of {Workflow::Event::Transition}s defined for this event.
|
8
8
|
# @!attribute [r] meta
|
9
9
|
# @return [Hash] Extra information defined for this event.
|
10
|
-
|
10
|
+
# @!attribute [r] tags
|
11
|
+
# @return [Array] Tags for this event.
|
12
|
+
attr_reader :name, :transitions, :meta, :tags
|
11
13
|
|
12
14
|
# @api private
|
13
15
|
# See {Workflow::State#on} for creating objects of this class.
|
14
16
|
# @param [Symbol] name The name of the event to create.
|
15
17
|
# @param [Hash] meta Optional Metadata for this object.
|
16
|
-
|
18
|
+
# @param [Array] tags Tags for this event.
|
19
|
+
def initialize(name, tags: [], meta: {})
|
17
20
|
@name = name.to_sym
|
18
21
|
@transitions = []
|
19
22
|
@meta = meta || {}
|
23
|
+
@tags = [tags].flatten.uniq
|
24
|
+
unless @tags.reject { |t| t.is_a? Symbol }
|
25
|
+
raise WorkflowDefinitionError, "Tags can only include symbols, event: [#{name}]"
|
26
|
+
end
|
20
27
|
end
|
21
28
|
|
22
29
|
def valid?
|
@@ -41,6 +41,7 @@ module Workflow
|
|
41
41
|
end
|
42
42
|
|
43
43
|
set_callback(:spec_definition, :after, :define_tag_methods)
|
44
|
+
set_callback(:spec_definition, :after, :define_event_tag_methods)
|
44
45
|
|
45
46
|
# Find the state with the given name.
|
46
47
|
#
|
@@ -126,7 +127,7 @@ module Workflow
|
|
126
127
|
|
127
128
|
private
|
128
129
|
|
129
|
-
module
|
130
|
+
module StateTagHelpers
|
130
131
|
def initial?
|
131
132
|
sequence.zero?
|
132
133
|
end
|
@@ -138,15 +139,24 @@ module Workflow
|
|
138
139
|
|
139
140
|
def define_tag_methods
|
140
141
|
tags = states.map(&:tags).flatten.uniq
|
141
|
-
tag_method_module = build_tag_method_module(tags)
|
142
|
+
tag_method_module = build_tag_method_module(tags, true)
|
142
143
|
states.each do |state|
|
143
144
|
state.send :extend, tag_method_module
|
144
145
|
end
|
145
146
|
end
|
146
147
|
|
147
|
-
def
|
148
|
+
def define_event_tag_methods
|
149
|
+
events = states.map(&:events).flatten
|
150
|
+
tags = events.map(&:tags).flatten
|
151
|
+
tag_method_module = build_tag_method_module(tags, false)
|
152
|
+
events.each do |event|
|
153
|
+
event.send :extend, tag_method_module
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def build_tag_method_module(tags, include_state_helpers)
|
148
158
|
tag_method_module = Module.new
|
149
|
-
tag_method_module.send :include,
|
159
|
+
tag_method_module.send :include, StateTagHelpers if include_state_helpers
|
150
160
|
tag_method_module.class_eval do
|
151
161
|
tags.each do |tag|
|
152
162
|
define_method "#{tag}?" do
|
data/lib/workflow/state.rb
CHANGED
@@ -26,9 +26,9 @@ module Workflow
|
|
26
26
|
@sequence = sequence
|
27
27
|
@events = []
|
28
28
|
@meta = meta
|
29
|
-
@tags = [tags].flatten
|
29
|
+
@tags = [tags].flatten.uniq
|
30
30
|
unless @tags.reject { |t| t.is_a? Symbol }
|
31
|
-
raise WorkflowDefinitionError, "Tags can only include symbols, state: #{name}"
|
31
|
+
raise WorkflowDefinitionError, "Tags can only include symbols, state: [#{name}]"
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -71,9 +71,9 @@ module Workflow
|
|
71
71
|
# state :the_diner
|
72
72
|
# end
|
73
73
|
# ```
|
74
|
-
def on(name, to: nil, meta: {}, &transitions)
|
74
|
+
def on(name, to: nil, tags: [], meta: {}, &transitions)
|
75
75
|
check_can_add_transition!(name, to: to, &transitions)
|
76
|
-
event = Workflow::Event.new(name, meta: meta)
|
76
|
+
event = Workflow::Event.new(name, tags: tags, meta: meta)
|
77
77
|
|
78
78
|
if to
|
79
79
|
event.to to
|
data/lib/workflow/version.rb
CHANGED