data_cleansing 0.3.1 → 0.3.2
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/data_cleansing/cleanse.rb +17 -1
- data/lib/data_cleansing/version.rb +1 -1
- data/nbproject/private/private.xml +4 -0
- data/nbproject/private/rake-d.txt +4 -0
- data/test/ruby_test.rb +44 -1
- data/test/test_db.sqlite3 +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8666401eb50e30f3b447a19d1764b6eb6ce34b70
|
4
|
+
data.tar.gz: 4f039f29b178dd10071cb9b8ea97767e0a950250
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4949339d972ad1e361363dcf49b6cd6467eb2202c75e8751783818bbda85a31397d582fd9c6eaf72ccb29b379dd515e2dff8c2e07fe3a998d182cf7add187f6
|
7
|
+
data.tar.gz: 9359a1fad55a8f47626c03925a8a956b3b5159624cb1fd6d987b7b3d2a6999c036d9d2677188a5f75ea8551d4d4094a17c351f8f0f1f6f2cf044115fab554008
|
@@ -22,7 +22,23 @@ module DataCleansing
|
|
22
22
|
module InstanceMethods
|
23
23
|
# Cleanse the attributes using specified cleaners
|
24
24
|
def cleanse_attributes!
|
25
|
-
|
25
|
+
# Execute parent cleansers first, starting with the top parent
|
26
|
+
klasses = [self.class]
|
27
|
+
klass = self.class.superclass
|
28
|
+
while klass != Object
|
29
|
+
klasses << klass if klass.respond_to?(:cleaners)
|
30
|
+
klass = klass.superclass
|
31
|
+
end
|
32
|
+
klasses.reverse_each {|klass| execute_cleaners(klass.cleaners)}
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
# Run each of the cleaners in the order they are listed in the array
|
39
|
+
def execute_cleaners(cleaners)
|
40
|
+
return false if cleaners.nil?
|
41
|
+
cleaners.each do |cleaner_struct|
|
26
42
|
params = cleaner_struct.params
|
27
43
|
attrs = cleaner_struct.attributes
|
28
44
|
|
data/test/ruby_test.rb
CHANGED
@@ -9,7 +9,12 @@ require 'data_cleansing'
|
|
9
9
|
# Define a global cleanser
|
10
10
|
DataCleansing.register_cleaner(:strip) {|string, params, object| string.strip!}
|
11
11
|
|
12
|
-
class
|
12
|
+
# Non Cleansing base class
|
13
|
+
class RubyUserBase
|
14
|
+
attr_accessor :version
|
15
|
+
end
|
16
|
+
|
17
|
+
class RubyUser < RubyUserBase
|
13
18
|
include DataCleansing::Cleanse
|
14
19
|
|
15
20
|
attr_accessor :first_name, :last_name, :address1, :address2
|
@@ -21,6 +26,11 @@ class RubyUser
|
|
21
26
|
cleanse :address1, :address2, :cleaner => Proc.new {|string| "<< #{string.strip!} >>"}
|
22
27
|
end
|
23
28
|
|
29
|
+
class RubyUserChild < RubyUser
|
30
|
+
attr_accessor :gender
|
31
|
+
cleanse :gender, :cleaner => Proc.new {|gender| gender.to_s.strip.downcase}
|
32
|
+
end
|
33
|
+
|
24
34
|
# Another global cleaner, used by RubyUser2
|
25
35
|
DataCleansing.register_cleaner(:upcase) {|string| string.upcase!}
|
26
36
|
|
@@ -86,6 +96,39 @@ class RubyTest < Test::Unit::TestCase
|
|
86
96
|
end
|
87
97
|
end
|
88
98
|
|
99
|
+
context "with ruby user child" do
|
100
|
+
setup do
|
101
|
+
@user = RubyUserChild.new
|
102
|
+
@user.first_name = ' joe '
|
103
|
+
@user.last_name = "\n black\n"
|
104
|
+
@user.address1 = "2632 Brown St \n"
|
105
|
+
@user.gender = "\n Male \n"
|
106
|
+
end
|
107
|
+
|
108
|
+
should 'cleanse_attributes! using global cleaner' do
|
109
|
+
@user.cleanse_attributes!
|
110
|
+
assert_equal 'joe', @user.first_name
|
111
|
+
assert_equal 'black', @user.last_name
|
112
|
+
end
|
113
|
+
|
114
|
+
should 'cleanse_attributes! using attribute specific custom cleaner' do
|
115
|
+
@user.cleanse_attributes!
|
116
|
+
assert_equal '<< 2632 Brown St >>', @user.address1
|
117
|
+
end
|
118
|
+
|
119
|
+
should 'cleanse_attributes! not cleanse nil attributes' do
|
120
|
+
@user.first_name = nil
|
121
|
+
@user.cleanse_attributes!
|
122
|
+
assert_equal nil, @user.first_name
|
123
|
+
end
|
124
|
+
|
125
|
+
should 'cleanse_attributes! clean child attributes' do
|
126
|
+
@user.cleanse_attributes!
|
127
|
+
assert_equal 'male', @user.gender
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
89
132
|
context "with ruby user2" do
|
90
133
|
setup do
|
91
134
|
@user = RubyUser2.new
|
data/test/test_db.sqlite3
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_cleansing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reid Morrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thread_safe
|
@@ -42,6 +42,7 @@ files:
|
|
42
42
|
- lib/data_cleansing/data_cleansing.rb
|
43
43
|
- lib/data_cleansing/version.rb
|
44
44
|
- nbproject/private/private.properties
|
45
|
+
- nbproject/private/private.xml
|
45
46
|
- nbproject/private/rake-d.txt
|
46
47
|
- nbproject/project.properties
|
47
48
|
- nbproject/project.xml
|