argon 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/argon.gemspec +1 -0
- data/lib/argon/version.rb +1 -1
- data/lib/argon.rb +10 -25
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 705eb7f43e327e729691ed9b48ad18653ad33de2
|
4
|
+
data.tar.gz: 42c30f0c9b3d22930c5a2f64a5884024b5d54667
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97c1a137e2496e1b041497f1e0258316c4b64c67f86196e680f23c730b5c884390dba1bb80faf32ca5a66362b70f876a0fb06075c79140daa353b81781470cb3
|
7
|
+
data.tar.gz: 4aa1da9170c820b95e2e2de0419399146218bf2db251d69fe44b61ea9ea50738b9674b0b1e67d9eb13fb89de99592365ef50cd1c8c667e2a488b78560df065d6
|
data/argon.gemspec
CHANGED
data/lib/argon/version.rb
CHANGED
data/lib/argon.rb
CHANGED
@@ -4,12 +4,14 @@ require 'argon/invalid_transition_error'
|
|
4
4
|
require 'argon/invalid_parameter_error'
|
5
5
|
require 'active_support/concern'
|
6
6
|
require 'active_support/inflector'
|
7
|
+
require 'symbolic_enum'
|
7
8
|
require 'pry-byebug'
|
8
9
|
|
9
10
|
module Argon
|
10
11
|
extend ActiveSupport::Concern
|
11
12
|
extend ActiveSupport::Inflector
|
12
13
|
include ActiveSupport::Inflector
|
14
|
+
include SymbolicEnum
|
13
15
|
|
14
16
|
module ClassMethods
|
15
17
|
def state_machine(mapping)
|
@@ -104,11 +106,11 @@ module Argon
|
|
104
106
|
registered_edge_pairs << [from, to]
|
105
107
|
end
|
106
108
|
|
107
|
-
raise Argon::Error.new("`on_successful_transition` must be a lambda of signature `(from:, to:)`") if !on_successful_transition.nil? && !on_successful_transition.is_a?(Proc)
|
108
|
-
raise Argon::Error.new("`on_successful_transition` must be a lambda of signature `(from:, to:)`") if on_successful_transition.parameters.to_set != [[:keyreq, :from],[:keyreq, :to]].to_set
|
109
|
+
raise Argon::Error.new("`on_successful_transition` must be a lambda of signature `(record:, from:, to:)`") if !on_successful_transition.nil? && !on_successful_transition.is_a?(Proc)
|
110
|
+
raise Argon::Error.new("`on_successful_transition` must be a lambda of signature `(record:, from:, to:)`") if on_successful_transition.parameters.to_set != [[:keyreq, :record],[:keyreq, :from],[:keyreq, :to]].to_set
|
109
111
|
|
110
|
-
raise Argon::Error.new("`on_failed_transition` must be a lambda of signature `(from:, to:)`") if !on_failed_transition.nil? && !on_failed_transition.is_a?(Proc)
|
111
|
-
raise Argon::Error.new("`on_failed_transition` must be a lambda of signature `(from:, to:)`") if on_failed_transition.parameters.to_set != [[:keyreq, :from],[:keyreq, :to]].to_set
|
112
|
+
raise Argon::Error.new("`on_failed_transition` must be a lambda of signature `(record:, from:, to:)`") if !on_failed_transition.nil? && !on_failed_transition.is_a?(Proc)
|
113
|
+
raise Argon::Error.new("`on_failed_transition` must be a lambda of signature `(record:, from:, to:)`") if on_failed_transition.parameters.to_set != [[:keyreq, :record],[:keyreq, :from],[:keyreq, :to]].to_set
|
112
114
|
|
113
115
|
events_list.each do |event_name|
|
114
116
|
end
|
@@ -130,24 +132,7 @@ module Argon
|
|
130
132
|
self.class_variable_get(:@@state_machines || {})
|
131
133
|
end
|
132
134
|
|
133
|
-
|
134
|
-
define_singleton_method("#{ field.to_s.pluralize }") do
|
135
|
-
states_map
|
136
|
-
end
|
137
|
-
|
138
|
-
reverse_states_map = states_map.map{|v| [v[1],v[0]]}.to_h
|
139
|
-
|
140
|
-
define_method(field) do
|
141
|
-
reverse_states_map[self[field]]
|
142
|
-
end
|
143
|
-
|
144
|
-
states_map.each_pair do |state_name, state_value|
|
145
|
-
scope state_name, -> { where(field => state_value) }
|
146
|
-
|
147
|
-
define_method("#{ state_name }?".to_sym) do
|
148
|
-
self[field] == state_value
|
149
|
-
end
|
150
|
-
end
|
135
|
+
symbolic_enum field => states_map, disable_setters: true
|
151
136
|
|
152
137
|
edges_list.each do |edge_details|
|
153
138
|
from = edge_details[:from]
|
@@ -176,7 +161,7 @@ module Argon
|
|
176
161
|
end
|
177
162
|
|
178
163
|
if self.send(field) != from
|
179
|
-
on_failed_transition.call(from: self.send(field), to: to)
|
164
|
+
on_failed_transition.call(record: self, from: self.send(field), to: to)
|
180
165
|
raise Argon::InvalidTransitionError.new("Invalid state transition")
|
181
166
|
end
|
182
167
|
|
@@ -198,11 +183,11 @@ module Argon
|
|
198
183
|
end
|
199
184
|
end
|
200
185
|
rescue => e
|
201
|
-
on_failed_transition.call(from: self.send(field), to: to)
|
186
|
+
on_failed_transition.call(record: self, from: self.send(field), to: to)
|
202
187
|
raise e
|
203
188
|
end
|
204
189
|
|
205
|
-
on_successful_transition.call(from: from, to: to)
|
190
|
+
on_successful_transition.call(record: self, from: from, to: to)
|
206
191
|
|
207
192
|
unless after_lock_callback.nil?
|
208
193
|
if args.empty?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: argon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ajith Hussain
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: symbolic_enum
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.1.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.1.0
|
97
111
|
description:
|
98
112
|
email:
|
99
113
|
- csy0013@googlemail.com
|