stator 0.1.3 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 214097ce2a773c6b9757680971d7a760543432df
4
- data.tar.gz: 9c49c056f533f3674a7084d9faf4dc23ea2bc90f
3
+ metadata.gz: 6975d1e52854c059916ff592dfa6aa0b6b1ca38e
4
+ data.tar.gz: 46770289d79b6b2f4632189aa2cf8e9d8b1cbb58
5
5
  SHA512:
6
- metadata.gz: 12fe01cec42c2d9d0197128fc12dbb4a3d3890103a6d4627421054d82d52ee63d06e0b58b43c19a98a3bdee9c658fd2f40b25ea6f0e2c715348bead72cf30b3c
7
- data.tar.gz: 62854fb511cb9a3b2805c6e6554721e810a13c0f105f387f786c918c22fad4abfbe6ccc478ed57bf60526533996e8b0c54773e6443c6297b41b3a0a7eb6c0b95
6
+ metadata.gz: 538e813262272898e14939b345f5764905289dc58a56bd881a7566b2d595ea00d979febeb439243a544d647612866e9973ddbec013903419a6c318fa48712c53
7
+ data.tar.gz: fd4b003fe8dd0347e2309803b600c12630f164462f003d643fe06d32bbf15a8c327c650e261f098607924c056fc973f29dc88e1bfb8f21821303661feb070005
@@ -71,6 +71,26 @@ module Stator
71
71
  true
72
72
  end
73
73
 
74
+ def in_state_at?(state, t)
75
+ state = state.to_s
76
+ t = t.to_time
77
+
78
+ state_at = @record.send("#{state}_#{@machine.field}_at")
79
+
80
+ return false if state_at.nil?
81
+ return false if state_at > t
82
+
83
+ min_next = @machine.states.map do |s|
84
+ next if state == s
85
+ at = @record.send("#{s}_#{@machine.field}_at")
86
+ at && at >= state_at ? at : nil
87
+ end.compact.sort[0]
88
+
89
+ return true if min_next.nil?
90
+ return true if min_next >= t
91
+ false
92
+ end
93
+
74
94
 
75
95
  protected
76
96
 
@@ -102,14 +102,14 @@ module Stator
102
102
 
103
103
  def verify_state_singularity_of_transition(transition)
104
104
  transition.from_states.each do |from|
105
- if other = matching_transition(from, transition.to_state)
105
+ if matching_transition(from, transition.to_state)
106
106
  raise "[Stator] another transition already exists which moves #{@class_name} from #{from.inspect} to #{transition.to_state.inspect}"
107
107
  end
108
108
  end
109
109
  end
110
110
 
111
111
  def verify_name_singularity_of_transition(transition)
112
- if other = @transitions.detect{|other| transition.name && transition.name == other.name }
112
+ if @transitions.detect{|other| transition.name && transition.name == other.name }
113
113
  raise "[Stator] another transition already exists with the name of #{transition.name.inspect} in the #{@class_name} class"
114
114
  end
115
115
  end
data/lib/stator/model.rb CHANGED
@@ -39,6 +39,10 @@ module Stator
39
39
  end
40
40
  end
41
41
 
42
+ def in_state_at?(state, t, namespace = '')
43
+ machine = self._stator(namespace)
44
+ machine.integration(self).in_state_at?(state, t)
45
+ end
42
46
 
43
47
  protected
44
48
 
@@ -1,7 +1,7 @@
1
1
  module Stator
2
2
  MAJOR = 0
3
3
  MINOR = 1
4
- PATCH = 3
4
+ PATCH = 4
5
5
  PRERELEASE = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, PATCH, PRERELEASE].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Nelson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-23 00:00:00.000000000 Z
11
+ date: 2016-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord