simple_states 1.1.0.rc3 → 1.1.0.rc5

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: 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