simple_states 1.1.0.rc8 → 1.1.0.rc9

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: 9cbfef0efaf93d1c51a1598450fecc545aa1f553
4
- data.tar.gz: f0587d5e61c30fa30ca244dffe59468a38c66843
3
+ metadata.gz: 6cb0cd4174f43de4ce090284993ccb0aa8d281c8
4
+ data.tar.gz: e4e602930a604f01e96b0c2cb0c40141b712c58a
5
5
  SHA512:
6
- metadata.gz: 3afe817b596759582d3c044a9aaecd0be85ccb147fe3e74ac128538027fccac06ec12fd8c6316ab2db08589902711923f9c77017df3db8bd7358ca9ed9b26f8a
7
- data.tar.gz: a7e809db0bcadb50a8f87049170894de4e9edcac90b09f6204c054220a039d082e25a4631adc3ce8044ede719723061960a9172f13f896f5b6967de9b1117585
6
+ metadata.gz: 92f4f66f9cbd3850146ef9b623fec993ae0f311d052fd74ad3683cf55dc059e86cbf699b8698fea88cd5517e46b5e53b2088119ae9a13127b6711faa1d36d296
7
+ data.tar.gz: 271c62daefe82dbd858d7b4d6b07071ea325af9575bb03447b266e02b44f27bc2e320fb259b03df913e8206e3e940a14c7abab92959ba38c3d677ddf8fbf51c5
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_states (1.1.0.rc7)
4
+ simple_states (1.1.0.rc8)
5
5
  activesupport
6
- hashr (~> 0.0.10)
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
@@ -14,7 +13,6 @@ GEM
14
13
  minitest (~> 5.1)
15
14
  thread_safe (~> 0.3, >= 0.3.4)
16
15
  tzinfo (~> 1.1)
17
- hashr (0.0.22)
18
16
  i18n (0.7.0)
19
17
  json (1.8.3)
20
18
  metaclass (0.0.1)
@@ -54,13 +54,16 @@ module SimpleStates
54
54
  state = data[:state].try(:to_sym) || target_state
55
55
  object.past_states << object.state.to_sym if object.state
56
56
  object.state = state.to_sym
57
- set_timestamp(object, data[:"#{target_state}_at"] || now)
57
+ write_attrs(object, data)
58
58
  end
59
59
 
60
- def set_timestamp(object, time)
61
- reader, writer = :"#{target_state}_at", :"#{target_state}_at="
62
- return unless object.respond_to?(writer) && object.respond_to?(reader) && object.send(reader).nil?
63
- object.send(writer, time)
60
+ def write_attrs(object, data)
61
+ data = { :"#{target_state}_at" => Time.now.utc }.merge(data)
62
+ data.each { |key, value| write_attr(object, key, value) }
63
+ end
64
+
65
+ def write_attr(object, key, value)
66
+ object.send(:"#{key}=", value) if object.respond_to?(:"#{key}=") && object.respond_to?(key) && object.send(key).nil?
64
67
  end
65
68
 
66
69
  def set_state?(object, args)
@@ -69,7 +72,7 @@ module SimpleStates
69
72
  return true unless object.class.state_options[:ordered]
70
73
  states = object.class.state_names
71
74
  lft, rgt = states.index(object.state.try(:to_sym)), states.index(state)
72
- lft.nil? || rgt.nil? || lft < rgt
75
+ lft.nil? || rgt.nil? || lft <= rgt
73
76
  end
74
77
 
75
78
  def target_state
@@ -1,3 +1,3 @@
1
1
  module SimpleStates
2
- VERSION = '1.1.0.rc8'
2
+ VERSION = '1.1.0.rc9'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_states
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.rc8
4
+ version: 1.1.0.rc9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Fuchs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-04 00:00:00.000000000 Z
11
+ date: 2015-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport