stateful.rb 0.14.2 → 0.14.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8bee17b4fed729bf32325ec72f662a7175e8b267f944354b7ace17245a12e99
4
- data.tar.gz: '039f8fb6263d7df0dd86b5e2f5140ea1c836197b7fdee00758d1ab104a9cb1ba'
3
+ metadata.gz: faf29ed4e3307bdd9dcd36b495f7e79d5d994f5ab246e788a5f15a602abda118
4
+ data.tar.gz: ca78f276718cd475c2442162246709b7768390bd413c276e7f97aa9e73b467ba
5
5
  SHA512:
6
- metadata.gz: b16d65a49c0dc0cd613a31f50f7afb005634a7c806bfd5b072ceef00742e9d35216d5b59695284caf0cf2330f6a70eb124c23b69355f9907dd73498afe9fa0f4
7
- data.tar.gz: 0b145b211f8ce4d022599e5f24d48f410744e13886d7b24542573873ea5d733ee5b5d4d47a1b472ade695a725057e751f34e1a87280ec7b147450eac93e401f3
6
+ metadata.gz: 90cb00e9c62ea416cbb7f53b61698d6cb1606376b6c2061c83de25ce2ed9e032b77530cddd8d7333f90b4f211973cfef254784e9d2b115a4e02c9de9f31b7822
7
+ data.tar.gz: b6b4d4e1bc0730b40e9dbe32d97568f2f0ed4e8a64750f3dc17544159fe461401beb405c443c52ad21a7c261901787a6d6cd9170656c227852756d0f64618330
data/lib/Stateful.rb CHANGED
@@ -1,56 +1,19 @@
1
1
  # Stateful.rb
2
2
  # Stateful
3
3
 
4
- require_relative File.join('Stateful', 'ClassMethods')
5
- require_relative File.join('Stateful', 'InstanceMethods')
6
-
7
4
  module Stateful
8
5
 
9
6
  class << self
10
7
 
11
- def set_column_name(klass)
12
- if defined?(::ActiveRecord::Base) && klass < ::ActiveRecord::Base
13
- unless klass.instance_variable_get(:@stateful_column_name)
14
- klass.instance_variable_set(:@stateful_column_name, 'current_state')
15
- end
16
- else
17
- unless klass.instance_variable_get(:@stateful_variable_name)
18
- klass.instance_variable_set(:@stateful_variable_name, 'current_state')
19
- end
20
- end
21
- end
22
-
23
- def load_persistence_class_methods(klass)
8
+ def extended(klass)
24
9
  if defined?(::ActiveRecord::Base) && klass < ::ActiveRecord::Base
25
10
  require_relative File.join('Stateful', 'ActiveRecord')
26
- klass.extend(Stateful::ActiveRecord::ClassMethods)
11
+ klass.extend(Stateful::ActiveRecord)
27
12
  else
28
13
  require_relative File.join('Stateful', 'Poro')
29
- klass.extend(Stateful::Poro::ClassMethods)
14
+ klass.extend(Stateful::Poro)
30
15
  end
31
16
  end
32
-
33
- def define_instance_methods(klass)
34
- if defined?(::ActiveRecord::Base) && klass < ::ActiveRecord::Base
35
- klass.define_stateful_column_name_setter_method
36
- klass.define_stateful_column_name_getter_method
37
- else
38
- klass.define_stateful_variable_name_setter_method
39
- klass.define_stateful_variable_name_getter_method
40
- end
41
- klass.define_next_state_method
42
- klass.define_transitions_method
43
- klass.define_initial_stateQ_method
44
- klass.define_final_stateQ_method
45
- end
46
-
47
- def extended(klass)
48
- klass.extend(Stateful::ClassMethods)
49
- klass.send(:include, Stateful::InstanceMethods)
50
- set_column_name(klass)
51
- load_persistence_class_methods(klass)
52
- define_instance_methods(klass)
53
- end
54
17
  alias_method :included, :extended
55
18
 
56
19
  end # class << self
@@ -1,7 +1,8 @@
1
1
  # Stateful/ActiveRecord.rb
2
2
  # Stateful::ActiveRecord
3
3
 
4
- require_relative File.join('..', 'Stateful')
4
+ require_relative 'ClassMethods'
5
+ require_relative 'InstanceMethods'
5
6
  require_relative File.join('ActiveRecord', 'ClassMethods')
6
7
 
7
8
  module Stateful
@@ -22,7 +22,7 @@ module Stateful
22
22
  end
23
23
  end
24
24
 
25
- def define_status_boolean_method(state_name)
25
+ def define_status_predicate_method(state_name)
26
26
  stateful_column_name = self.instance_variable_get(:@stateful_column_name)
27
27
  define_method("#{state_name}?") do
28
28
  self.send(stateful_column_name).name == state_name
@@ -12,10 +12,18 @@ module Stateful
12
12
 
13
13
  # start DSL
14
14
 
15
+ def stateful(options = {}, &block)
16
+ stateful_states.stateful(options, &block)
17
+ end
18
+
15
19
  def initial_state(state_name = nil, options = {}, &block)
16
20
  stateful_states.initial_state(state_name, options, &block)
17
21
  end
18
22
 
23
+ def state(state_name, options = {}, &block)
24
+ stateful_states.state(state_name, options, &block)
25
+ end
26
+
19
27
  def final_state(*state_names)
20
28
  stateful_states.final_state(*state_names)
21
29
  end
@@ -24,17 +32,9 @@ module Stateful
24
32
  stateful_states.final_states(*state_names)
25
33
  end
26
34
 
27
- def state(state_name, options = {}, &block)
28
- stateful_states.state(state_name, options, &block)
29
- end
30
-
31
- def stateful(options = {}, &block)
32
- stateful_states.stateful(options, &block)
33
- end
34
-
35
35
  # end DSL
36
36
 
37
- # boolean methods
37
+ # predicate methods
38
38
 
39
39
  def final_state?
40
40
  !final_states.empty?
@@ -20,7 +20,7 @@ module Stateful
20
20
  self.class.final_states
21
21
  end
22
22
 
23
- # boolean methods
23
+ # predicate methods
24
24
 
25
25
  def active?
26
26
  !final_state?
data/lib/Stateful/Poro.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  # Stateful/Poro.rb
2
2
  # Stateful::Poro
3
3
 
4
- require_relative File.join('..', 'Stateful')
4
+ require_relative 'ClassMethods'
5
+ require_relative 'InstanceMethods'
5
6
  require_relative File.join('Poro', 'ClassMethods')
6
7
 
7
8
  module Stateful
@@ -22,7 +22,7 @@ module Stateful
22
22
  end
23
23
  end
24
24
 
25
- def define_status_boolean_method(state_name)
25
+ def define_status_predicate_method(state_name)
26
26
  stateful_variable_name = self.instance_variable_get(:@stateful_variable_name)
27
27
  define_method("#{state_name}?") do
28
28
  self.send(stateful_variable_name).name == state_name
@@ -79,7 +79,7 @@ module Stateful
79
79
  state.transitions.each do |transition|
80
80
  @klass.define_event_method(transition)
81
81
  end
82
- @klass.define_status_boolean_method(state_name)
82
+ @klass.define_status_predicate_method(state_name)
83
83
  state
84
84
  end
85
85
 
@@ -1,5 +1,5 @@
1
1
  module Stateful
2
2
 
3
- VERSION = '0.14.2'
3
+ VERSION = '0.14.9'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stateful.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.2
4
+ version: 0.14.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - thoran
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-02 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2019-12-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest-spec-context
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pg
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
13
69
  description: Easily add state and manage it with Poro and ActiveRecord objects.
14
70
  email: code@thoran.com
15
71
  executables: []
@@ -47,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
103
  - !ruby/object:Gem::Version
48
104
  version: '0'
49
105
  requirements: []
50
- rubygems_version: 3.0.3
106
+ rubygems_version: 3.1.0.pre3
51
107
  signing_key:
52
108
  specification_version: 4
53
109
  summary: A Ruby state machine.