simple_states 1.1.0.rc3 → 1.1.0.rc5

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: f62484e71bb773d12d26c48145326a69c9417eaa
4
- data.tar.gz: 43a29c2623c7b5494db9ec06be67539d9dcd1023
3
+ metadata.gz: 08cd20b4c3fb3a7f24851e71a511e0ceec335e80
4
+ data.tar.gz: 22d653ec211a6507ee79ad774bcc604096dfced6
5
5
  SHA512:
6
- metadata.gz: 99d1f7413bfc08f2c22dc8ea2ab56844373a6ee6c0cb7ee54eb283728f2b796608342fe2dcb8b5ded1a037f1b8354dc3138a69709fdfe00e80493c37a69f4d0d
7
- data.tar.gz: b76d5167d1035b790a346052fab1c898742b61f556b3557997db6aa030b2f3d32efbd7ca6f19737d875ad4e9ca80b5e828aa5ab54ff626bed096d480fd64bfdb
6
+ metadata.gz: 2de3393af9bf9bc2c78a96efc52c77022d4feeda20e093fb40a6a6542105b13471f2e5c4c1bfb39efc38949a7786531cb1ccf80773fee149bd0d66103451bb13
7
+ data.tar.gz: ef5b76be5af7dca69d302ac4bf0005153b3087c9c31d452c2dd7b963d831c749d58c7310d1ca6bc9ecc37750b8dad7ad8f21e22a4e1fb1de4893152df7e452ec
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_states (1.1.0.pre)
4
+ simple_states (1.1.0.rc4)
5
5
  activesupport
6
6
  hashr (~> 0.0.10)
7
7
 
@@ -73,8 +73,7 @@ module SimpleStates
73
73
 
74
74
  def reset_state
75
75
  self.state = self.class.initial_state
76
- states = self.class.state_names - [self.class.initial_state]
77
- states.each { |state| self.send(:"#{state}_at=", nil) if respond_to?(:"#{state}_at=") }
76
+ self.class.events.map { |*args| Event.new(*args).reset(self) }
78
77
  end
79
78
 
80
79
  def past_states
@@ -28,6 +28,10 @@ module SimpleStates
28
28
  end
29
29
  end
30
30
 
31
+ def reset(object)
32
+ set_timestamp(object, nil)
33
+ end
34
+
31
35
  protected
32
36
 
33
37
  def save?
@@ -51,10 +55,17 @@ module SimpleStates
51
55
  end
52
56
 
53
57
  def set_state(object, args)
54
- state = target_state(args)
58
+ data = args.last.is_a?(Hash) ? args.last : {}
59
+ state = data[:state].try(:to_sym) || target_state
55
60
  object.past_states << object.state.to_sym if object.state
56
61
  object.state = state.to_sym if set_state?(object, state)
57
- object.send(:"#{state}_at=", now) if object.respond_to?(:"#{state}_at=") && object.respond_to?(:"#{state}_at") && object.send(:"#{state}_at").nil?
62
+ set_timestamp(object, data[:"#{target_state}_at"] || now)
63
+ end
64
+
65
+ def set_timestamp(object, time)
66
+ reader, writer = :"#{target_state}_at", :"#{target_state}_at="
67
+ return unless object.respond_to?(writer) && object.respond_to?(reader) && object.send(reader).nil?
68
+ object.send(writer, time)
58
69
  end
59
70
 
60
71
  def set_state?(object, state)
@@ -64,9 +75,8 @@ module SimpleStates
64
75
  lft && rgt && lft < rgt
65
76
  end
66
77
 
67
- def target_state(args)
68
- state = args.last[:state].try(:to_sym) if args.last.is_a?(Hash)
69
- state || options.to || "#{name}ed".sub(/eed$/, 'ed').to_sym
78
+ def target_state
79
+ options.to || "#{name}ed".sub(/eed$/, 'ed').to_sym
70
80
  end
71
81
 
72
82
  def send_methods(object, methods, args)
@@ -1,3 +1,3 @@
1
1
  module SimpleStates
2
- VERSION = '1.1.0.rc3'
2
+ VERSION = '1.1.0.rc5'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_states
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.rc3
4
+ version: 1.1.0.rc5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Fuchs