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 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