preprocessor-aasm 2.0.6 → 2.0.8
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/README.rdoc +6 -7
- data/Rakefile +2 -2
- data/lib/aasm.rb +1 -0
- data/lib/persistence/active_record_persistence.rb +6 -6
- data/lib/state.rb +6 -2
- data/lib/state_machine.rb +7 -2
- metadata +1 -1
data/README.rdoc
CHANGED
@@ -4,17 +4,13 @@ This fork make possible use Integer columns in AR objects (for DB perfomance).
|
|
4
4
|
|
5
5
|
class Mary < ActiveRecord::Base
|
6
6
|
include AASM
|
7
|
-
aasm_integers 0 => :pending,
|
8
|
-
1 => :started,
|
9
|
-
2 => :finished
|
10
|
-
|
11
7
|
aasm_initial_state :pending
|
12
8
|
|
13
9
|
aasm_column :status
|
14
10
|
|
15
|
-
aasm_state :pending
|
16
|
-
aasm_state :started
|
17
|
-
aasm_state :finished
|
11
|
+
aasm_state :pending, :integer => 0
|
12
|
+
aasm_state :started, :integer => 1
|
13
|
+
aasm_state :finished, :integer => 2
|
18
14
|
|
19
15
|
aasm_event :start do
|
20
16
|
transitions :to => :started, :from => [:pending]
|
@@ -36,6 +32,9 @@ This fork make possible use Integer columns in AR objects (for DB perfomance).
|
|
36
32
|
mary.aasm_current_state => :started
|
37
33
|
mary.status => 1
|
38
34
|
|
35
|
+
# For writing conditions like { :state => Blog.aasm_integers[:closed] }
|
36
|
+
Mary.aasm_integers[:started] => 1
|
37
|
+
|
39
38
|
|
40
39
|
Auto generated named scopes (Mary.pending, Mary.started) also works.
|
41
40
|
|
data/Rakefile
CHANGED
@@ -41,8 +41,8 @@ if !defined?(Gem)
|
|
41
41
|
puts "Package target requires RubyGEMs"
|
42
42
|
else
|
43
43
|
spec = Gem::Specification.new do |s|
|
44
|
-
s.name = '
|
45
|
-
s.version =
|
44
|
+
s.name = 'aaasm'
|
45
|
+
s.version = "2.0.8"
|
46
46
|
s.summary = 'State machine mixin for Ruby objects'
|
47
47
|
s.description = <<-EOF
|
48
48
|
AASM is a continuation of the acts as state machine rails plugin, built for plain Ruby objects.
|
data/lib/aasm.rb
CHANGED
@@ -2,6 +2,7 @@ require File.join(File.dirname(__FILE__), 'event')
|
|
2
2
|
require File.join(File.dirname(__FILE__), 'state')
|
3
3
|
require File.join(File.dirname(__FILE__), 'state_machine')
|
4
4
|
require File.join(File.dirname(__FILE__), 'persistence')
|
5
|
+
require File.join(File.dirname(__FILE__), 'integers')
|
5
6
|
|
6
7
|
module AASM
|
7
8
|
def self.Version
|
@@ -88,10 +88,6 @@ module AASM
|
|
88
88
|
# @aasm_column
|
89
89
|
AASM::StateMachine[self].config.column
|
90
90
|
end
|
91
|
-
|
92
|
-
def aasm_integers(integers)
|
93
|
-
AASM::StateMachine[self].config.integers = integers
|
94
|
-
end
|
95
91
|
|
96
92
|
def find_in_state(number, state, *args)
|
97
93
|
with_state_scope state do
|
@@ -111,14 +107,18 @@ module AASM
|
|
111
107
|
end
|
112
108
|
end
|
113
109
|
|
110
|
+
def aasm_integers
|
111
|
+
AASM::StateMachine[self].integers
|
112
|
+
end
|
113
|
+
|
114
114
|
# Get state name by integer if integers are set
|
115
115
|
def aasm_state_name(value)
|
116
|
-
|
116
|
+
aasm_integers.setted? && value.is_a?(Integer) ? aasm_integers.by_integer(value) : value.to_s
|
117
117
|
end
|
118
118
|
|
119
119
|
# Get state integer by symbol if integers are set
|
120
120
|
def aasm_state_integer(value)
|
121
|
-
|
121
|
+
aasm_integers.setted? && value.is_a?(Symbol) ? aasm_integers.by_state(value) : value
|
122
122
|
end
|
123
123
|
|
124
124
|
|
data/lib/state.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
module AASM
|
2
2
|
module SupportingClasses
|
3
3
|
class State
|
4
|
-
attr_reader :name, :options
|
4
|
+
attr_reader :name, :options
|
5
5
|
|
6
6
|
def initialize(name, options={})
|
7
|
-
@name, @options = name, options
|
7
|
+
@name, @options = name, options
|
8
|
+
end
|
9
|
+
|
10
|
+
def method_name
|
11
|
+
|
8
12
|
end
|
9
13
|
|
10
14
|
def ==(state)
|
data/lib/state_machine.rb
CHANGED
@@ -11,7 +11,7 @@ module AASM
|
|
11
11
|
(@machines ||= {})[args] = val
|
12
12
|
end
|
13
13
|
|
14
|
-
attr_accessor :states, :events, :initial_state, :config
|
14
|
+
attr_accessor :states, :events, :initial_state, :config, :integers
|
15
15
|
attr_reader :name
|
16
16
|
|
17
17
|
def initialize(name)
|
@@ -20,6 +20,7 @@ module AASM
|
|
20
20
|
@states = []
|
21
21
|
@events = {}
|
22
22
|
@config = OpenStruct.new
|
23
|
+
@integers = AASM::SupportingClasses::Integers.new
|
23
24
|
end
|
24
25
|
|
25
26
|
def clone
|
@@ -29,7 +30,11 @@ module AASM
|
|
29
30
|
end
|
30
31
|
|
31
32
|
def create_state(name, options)
|
32
|
-
|
33
|
+
unless @states.include?(name)
|
34
|
+
state = AASM::SupportingClasses::State.new(name, options)
|
35
|
+
@states << state
|
36
|
+
integers.add_integer(state) if state.options[:integer]
|
37
|
+
end
|
33
38
|
end
|
34
39
|
end
|
35
40
|
end
|