changey 0.0.0 → 1.0.0

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: 8760b67cbf8d8eec056fd80ead4b86c2133f31b4
4
- data.tar.gz: 1d2fc324b094b89e5d9863056a9434347f864922
3
+ metadata.gz: 1c069619a0b94fd4ff58b8a911a21a801e733ae8
4
+ data.tar.gz: 1be948578e766f84a8281c4941a8e03f2f36c95c
5
5
  SHA512:
6
- metadata.gz: 929f25e36a6ac959fc940a4f7d25d1141086aafbfd016e77939f1254e8d84cba9ec3f3e83241ceef860a9bd2c7253e1a6cbac9d44315f2ce695a347e6022a89b
7
- data.tar.gz: 16e86288fd1a978e8675f22aca134b14e47d67743909f14bac1a4bba9772a4e5d584a8b3c831a75c4a9c0faf5f6dc5b0eaa7da73ba64d5340b257d3710bcfb33
6
+ metadata.gz: 2694c30516924e1b32a4afcb724b245f5d49dfe33afb66b532e989b098d56c97f76e74059522779c0ebd0f494bd0b0f089177ec9d571ae1ae336ad128971abd8
7
+ data.tar.gz: 88cf3f20ed7fcbc4e7e8d6b5623e0cd0f5d86eee01ab2d4283e11700d322755855b88eae6cbc897357e282a5aaee6954c999a80c342fe3bcc16442296f4d33df
@@ -0,0 +1 @@
1
+ require 'changey/railtie' if defined?(Rails)
@@ -10,7 +10,6 @@ module Changey
10
10
 
11
11
  def self.load(load_into)
12
12
  load_into.extend ClassMethods
13
- load_into.send :include, InstanceMethods
14
13
  end
15
14
 
16
15
  module ClassMethods
@@ -18,7 +17,15 @@ module Changey
18
17
  @changey_tracks ||= []
19
18
  end
20
19
 
20
+ def reset_changey!
21
+ @changey_tracks = nil
22
+ end
23
+
21
24
  def when_attribute(attribute_name, options = {}, &block)
25
+ if self.changey_tracks.empty?
26
+ include InstanceMethods
27
+ end
28
+
22
29
  unless options.has_key?(:changes_from) || options.has_key?(:changes_to)
23
30
  raise MissingChangeValue, "Attribute #{attribute_name} must specify a 'changes_to' or a 'changes_from' value"
24
31
  end
@@ -57,14 +64,20 @@ module Changey
57
64
  end
58
65
  end
59
66
 
67
+ private def clear_changey_tracks
68
+ @changey_tracks_to_run = nil
69
+ end
70
+
60
71
  private def run_changey_callbacks(event)
61
- @changey_tracks_to_run.each do |track, (was, now)|
62
- callbacks = track.send(event.to_s.pluralize)
63
- callbacks.each do |callback|
64
- if callback.is_a?(Proc)
65
- instance_exec(was, now, &callback)
66
- elsif callback.is_a?(Symbol)
67
- send(callback)
72
+ if @changey_tracks_to_run
73
+ @changey_tracks_to_run.each do |track, (was, now)|
74
+ callbacks = track.send(event.to_s.pluralize)
75
+ callbacks.each do |callback|
76
+ if callback.is_a?(Proc)
77
+ instance_exec(was, now, &callback)
78
+ elsif callback.is_a?(Symbol)
79
+ send(callback)
80
+ end
68
81
  end
69
82
  end
70
83
  end
@@ -14,9 +14,11 @@ module Changey
14
14
  attr_accessor :after_saves
15
15
  attr_accessor :after_commits
16
16
 
17
- def initialize(attribute)
17
+ def initialize(attribute, direction = nil, expected_value = nil, expected_other_value = Nothing)
18
18
  @attribute = attribute
19
- @expected_other_value = Nothing
19
+ @direction = direction
20
+ @expected_value = expected_value
21
+ @expected_other_value = expected_other_value
20
22
  @validates = []
21
23
  @before_saves = []
22
24
  @after_saves = []
@@ -30,19 +32,19 @@ module Changey
30
32
  current_value = record.send(attribute)
31
33
 
32
34
  if expected_other_value != Nothing
33
- if direction == :from && previous_value == expected_value && current_value == expected_other_value
35
+ if direction == :from && matches?(previous_value, expected_value) && matches?(current_value, expected_other_value)
34
36
  return true
35
37
  end
36
38
 
37
- if direction == :to && current_value == expected_value && previous_value == expected_other_value
39
+ if direction == :to && matches?(current_value, expected_value) && matches?(previous_value, expected_other_value)
38
40
  return true
39
41
  end
40
42
  else
41
- if direction == :from && previous_value == expected_value
43
+ if direction == :from && matches?(previous_value, expected_value)
42
44
  return true
43
45
  end
44
46
 
45
- if direction == :to && current_value == expected_value
47
+ if direction == :to && matches?(current_value, expected_value)
46
48
  return true
47
49
  end
48
50
  end
@@ -50,5 +52,22 @@ module Changey
50
52
  return false
51
53
  end
52
54
 
55
+ private
56
+
57
+ def matches?(value, expectation)
58
+ case expectation
59
+ when Array
60
+ expectation.include?(value)
61
+ when Regexp
62
+ !!(expectation =~ value)
63
+ when Proc
64
+ expectation.call(value) == true
65
+ when :anything
66
+ true
67
+ else
68
+ value == expectation
69
+ end
70
+ end
71
+
53
72
  end
54
73
  end
@@ -1,3 +1,3 @@
1
1
  module Changey
2
- VERSION = '0.0.0'
2
+ VERSION = '1.0.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: changey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cooke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-26 00:00:00.000000000 Z
11
+ date: 2016-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord