changey 0.0.0 → 1.0.0
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 +4 -4
- data/lib/changey.rb +1 -0
- data/lib/changey/dsl.rb +21 -8
- data/lib/changey/track.rb +25 -6
- data/lib/changey/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c069619a0b94fd4ff58b8a911a21a801e733ae8
|
4
|
+
data.tar.gz: 1be948578e766f84a8281c4941a8e03f2f36c95c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2694c30516924e1b32a4afcb724b245f5d49dfe33afb66b532e989b098d56c97f76e74059522779c0ebd0f494bd0b0f089177ec9d571ae1ae336ad128971abd8
|
7
|
+
data.tar.gz: 88cf3f20ed7fcbc4e7e8d6b5623e0cd0f5d86eee01ab2d4283e11700d322755855b88eae6cbc897357e282a5aaee6954c999a80c342fe3bcc16442296f4d33df
|
data/lib/changey.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
require 'changey/railtie' if defined?(Rails)
|
data/lib/changey/dsl.rb
CHANGED
@@ -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
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
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
|
data/lib/changey/track.rb
CHANGED
@@ -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
|
-
@
|
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
|
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
|
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
|
43
|
+
if direction == :from && matches?(previous_value, expected_value)
|
42
44
|
return true
|
43
45
|
end
|
44
46
|
|
45
|
-
if direction == :to && current_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
|
data/lib/changey/version.rb
CHANGED
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:
|
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-
|
11
|
+
date: 2016-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|