stator 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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