data_cleansing 0.3.1 → 0.3.2

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: 64293789c3bf568975be9ed1c8c05c8536c23144
4
- data.tar.gz: dc47cfa960847eaf926eb7f9695c92750d05c515
3
+ metadata.gz: 8666401eb50e30f3b447a19d1764b6eb6ce34b70
4
+ data.tar.gz: 4f039f29b178dd10071cb9b8ea97767e0a950250
5
5
  SHA512:
6
- metadata.gz: e7f84d6c1858468a1bcd916f98cf14b20869c3a50bf556001192eb6f166b97c4489d5a20b062604afeb3cc309eb709423e3401f50bf77f7f9980decd2c931688
7
- data.tar.gz: 6ce9b1ea07813cca4ee601c63dadab67c57c2d0e4e729f1a9b10175312be92c218d727ceca84060169215a24fd6e3d676cade7cc5a57de2918be81b7fe81ae90
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
- self.class.cleaners.each do |cleaner_struct|
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
 
@@ -1,3 +1,3 @@
1
1
  module DataCleansing
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
3
+ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
4
+ </project-private>
@@ -0,0 +1,4 @@
1
+ clean=Remove any temporary products.
2
+ clobber=Remove any generated file.
3
+ gem=Build gem
4
+ test=Run Test Suite
@@ -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 RubyUser
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
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.1
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-17 00:00:00.000000000 Z
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