attribute_normalizer 1.0.0.pre2 → 1.0.0.pre3

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.
data/README.textile CHANGED
@@ -41,7 +41,7 @@ p. Then just required it. Rails usages is as follows.
41
41
  h3. Rails 2
42
42
 
43
43
  <pre><code># config/environment.rb
44
- config.gem 'attribute_normalizer'</code></pre>
44
+ config.gem 'attribute_normalizer'</code></pre>
45
45
 
46
46
  h3. Rails 3
47
47
  <pre><code># Gemfile
@@ -60,7 +60,7 @@ describe Book do
60
60
  it { should normalize_attribute(:author) }
61
61
  it { should normalize_attribute(:price).from('$3,450.98').to(3450.98) }
62
62
  it { should normalize_attribute(:summary).from(' Here is my summary that is a little to long ').to('Here is m...') }
63
- it { should normalize_attribute(:title).from(' pick up chicks with magic tricks ').to('Pick Up Chicks With Magic Tricks')}
63
+ it { should normalize_attribute(:title).from(' pick up chicks with magic tricks ').to('Pick Up Chicks With Magic Tricks') }
64
64
  end</code></pre>
65
65
 
66
66
  p. The following normalizers are already included with the +0.3 version of the gem.
@@ -90,16 +90,16 @@ AttributeNormalizer.configure do |config|
90
90
  end
91
91
  end
92
92
 
93
- # The default normalizers if no :with option or block is given is to apply the :strip and :blank normalizers (in that order).
93
+ # The default normalizers if no normalizers or block is given is to apply the :strip and :blank normalizers (in that order).
94
94
  # You can change this if you would like as follows:
95
- # config.default_normalizers = :strip, :blank
95
+ # config.default_normalizers = { :strip => true, :blank => true }
96
96
 
97
- # You can enable the attribute normalizers automatically if the specified attributes exist in your column_names. It will use
97
+ # You can enable the attribute normalizers automatically if the specified attributes exist in your column_names. It will use
98
98
  # the default normalizers for each attribute (e.g. config.default_normalizers)
99
99
  # config.default_attributes = :name, :title
100
100
 
101
101
  # Also, You can add an specific attribute to default_attributes using one or more normalizers:
102
- # config.add_default_attribute :name, :with => :truncate
102
+ # config.add_default_attribute :name, :truncate => true
103
103
  end
104
104
  </code></pre>
105
105
 
@@ -112,10 +112,10 @@ The _normalize_attributes_ method is eager loaded into your ORM. _normalize_att
112
112
  normalize_attributes :author, :publisher
113
113
 
114
114
  # Using one of our predefined normalizers.
115
- normalize_attribute :price, :with => :currency
115
+ normalize_attribute :price, :currency => true
116
116
 
117
117
  # Using more then one of our predefined normalizers including one with options
118
- normalize_attribute :summary, :with => [ :strip, { :truncate => { :length => 12 } } ]
118
+ normalize_attribute :summary, :strip => true, :truncate => { :length => 12 }
119
119
 
120
120
  # You can also define your normalization block inline.
121
121
  normalize_attribute :title do |value|
@@ -142,18 +142,14 @@ p. If you are running RSpec there is matcher available for use. Usage can been
142
142
  h3. Rails 2
143
143
 
144
144
  <pre><code># spec/spec_helper.rb
145
- # ...
146
145
  Spec::Runner.configure do |config|
147
- # ...
148
- config.include AttributeNormalizer::RSpecMatcher, :type => :model
146
+ config.include AttributeNormalizer::RSpecMatcher, :type => :models
149
147
  end</code></pre>
150
148
 
151
149
  h3. Rails 3
152
150
 
153
151
  <pre><code># spec/spec_helper.rb
154
- # ...
155
- RSpec.configure do |config|
156
- # ...
152
+ Spec::Runner.configure do |config|
157
153
  config.include AttributeNormalizer::RSpecMatcher, :type => :model
158
154
  end</code></pre>
159
155
 
@@ -6,9 +6,8 @@ module AttributeNormalizer
6
6
 
7
7
  module ClassMethods
8
8
  def normalize_attributes(*attributes, &block)
9
- options = attributes.last.is_a?(::Hash) ? attributes.pop : {}
10
-
11
- normalizers = [options.delete(:with)].flatten.compact
9
+ normalizers = attributes.last.is_a?(::Hash) ? attributes.pop : {}
10
+
12
11
  if normalizers.empty? && !block_given?
13
12
  normalizers = AttributeNormalizer.configuration.default_normalizers # the default normalizers
14
13
  end
@@ -20,18 +19,17 @@ module AttributeNormalizer
20
19
  end
21
20
  else
22
21
  define_method "normalize_#{attribute}" do |value|
23
- normalized=value
24
- normalizers.each do |normalizer_name|
25
- unless normalizer_name.kind_of?(Symbol)
26
- normalizer_name,options=normalizer_name.keys[0],normalizer_name[normalizer_name.keys[0]]
22
+ normalized = value
23
+
24
+ normalizers.each do |key, options|
25
+ normalizer = AttributeNormalizer.configuration.normalizers[key]
26
+ raise AttributeNormalizer::MissingNormalizer.new("No normalizer was found for #{key}") unless normalizer
27
+
28
+ normalized = if normalizer.respond_to?(:normalize)
29
+ normalizer.normalize(normalized, TrueClass === options ? {} : options)
30
+ else
31
+ normalizer.call(normalized, TrueClass === options ? {} : options)
27
32
  end
28
-
29
- normalizer=AttributeNormalizer.configuration.normalizers[normalizer_name]
30
- raise AttributeNormalizer::MissingNormalizer.new("No normalizer was found for #{normalizer_name}") unless normalizer
31
-
32
- normalized= normalizer.respond_to?(:normalize) ? normalizer.normalize(normalized,options) :
33
- normalizer.call(normalized, options)
34
- #puts "#{normalizer_name} : ->'#{normalized}' (#{normalized.class})"
35
33
  end
36
34
  normalized
37
35
  end
@@ -1,7 +1,7 @@
1
1
  module AttributeNormalizer
2
2
  module Normalizers
3
3
  module BlankNormalizer
4
- def self.normalize(value, options)
4
+ def self.normalize(value, options = {})
5
5
  value.nil? || (value.is_a?(String) && value !~ /\S/) ? nil : value
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module AttributeNormalizer
2
2
  module Normalizers
3
3
  module PhoneNormalizer
4
- def self.normalize(value, options)
4
+ def self.normalize(value, options = {})
5
5
  value = value.is_a?(String) ? value.gsub(/[^0-9]+/, '') : value
6
6
  value.is_a?(String) && value.empty? ? nil : value
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module AttributeNormalizer
2
2
  module Normalizers
3
3
  module SquishNormalizer
4
- def self.normalize(value, options)
4
+ def self.normalize(value, options = {})
5
5
  value.is_a?(String) ? value.strip.gsub(/\s+/, ' ') : value
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module AttributeNormalizer
2
2
  module Normalizers
3
3
  module StripNormalizer
4
- def self.normalize(value, options)
4
+ def self.normalize(value, options = {})
5
5
  value.is_a?(String) ? value.strip : value
6
6
  end
7
7
  end
@@ -10,9 +10,9 @@ module AttributeNormalizer
10
10
  class << self
11
11
  attr_accessor :configuration
12
12
  end
13
-
13
+
14
14
  def self.configuration
15
- @configuration ||= Configuration.new
15
+ @configuration ||= Configuration.new
16
16
  end
17
17
 
18
18
  def self.configure
@@ -24,17 +24,17 @@ module AttributeNormalizer
24
24
  attr_accessor :default_normalizers, :normalizers, :default_attributes
25
25
 
26
26
  def default_normalizers=(normalizers)
27
- @default_normalizers = normalizers.is_a?(Array) ? normalizers : [ normalizers ]
27
+ @default_normalizers = normalizers
28
28
  end
29
29
 
30
30
  def default_attributes=(attributes)
31
31
  [attributes].flatten.each do |attribute|
32
- add_default_attribute(attribute, :with => default_normalizers)
32
+ add_default_attribute(attribute, default_normalizers)
33
33
  end
34
34
  end
35
35
 
36
- def add_default_attribute(attribute, options={})
37
- @default_attributes[attribute.to_s] = { :with => default_normalizers }.merge(options)
36
+ def add_default_attribute(attribute, normalizers)
37
+ @default_attributes[attribute.to_s] = normalizers
38
38
  end
39
39
 
40
40
  def initialize
@@ -1,9 +1,9 @@
1
1
  class Author < ActiveRecord::Base
2
2
 
3
3
  normalize_attribute :name
4
- normalize_attribute :nickname, :with => :squish
5
- normalize_attribute :first_name, :with => :strip
6
- normalize_attribute :last_name, :with => :blank
7
- normalize_attribute :phone_number, :with => :phone
4
+ normalize_attribute :nickname, :squish => true
5
+ normalize_attribute :first_name, :strip => true
6
+ normalize_attribute :last_name, :blank => true
7
+ normalize_attribute :phone_number, :phone => true
8
8
 
9
9
  end
data/spec/models/book.rb CHANGED
@@ -2,13 +2,9 @@ class Book < ActiveRecord::Base
2
2
 
3
3
  normalize_attribute :author
4
4
 
5
- normalize_attribute :us_price, :cnd_price, :with => :currency
6
-
7
- normalize_attributes :summary, :with => [ :strip,
8
- { :truncate => { :length => 12 } },
9
- :blank
10
- ]
5
+ normalize_attribute :us_price, :cnd_price, :currency => true
11
6
 
7
+ normalize_attributes :summary, :strip => true, :truncate => { :length => 12 }, :blank => true
12
8
 
13
9
  normalize_attributes :title do |value|
14
10
  value.is_a?(String) ? value.titleize.strip : value
data/spec/test_helper.rb CHANGED
@@ -30,7 +30,7 @@ AttributeNormalizer.configure do |config|
30
30
 
31
31
  config.default_normalizers = :strip, :special_normalizer, :blank
32
32
  config.default_attributes = :name, :title
33
- config.add_default_attribute :authors, :with => [:strip, :blank]
33
+ config.add_default_attribute :authors, :strip => true, :blank => true
34
34
 
35
35
  end
36
36
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attribute_normalizer
3
3
  version: !ruby/object:Gem::Version
4
- hash: -1876988175
5
- prerelease: true
4
+ hash: 1923831951
5
+ prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
9
  - 0
10
- - pre2
11
- version: 1.0.0.pre2
10
+ - pre
11
+ - 3
12
+ version: 1.0.0.pre3
12
13
  platform: ruby
13
14
  authors:
14
15
  - Michael Deering
@@ -16,7 +17,7 @@ autorequire:
16
17
  bindir: bin
17
18
  cert_chain: []
18
19
 
19
- date: 2011-01-16 00:00:00 -07:00
20
+ date: 2011-03-18 00:00:00 -06:00
20
21
  default_executable:
21
22
  dependencies: []
22
23
 
@@ -87,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
88
  requirements: []
88
89
 
89
90
  rubyforge_project:
90
- rubygems_version: 1.3.7
91
+ rubygems_version: 1.5.2
91
92
  signing_key:
92
93
  specification_version: 3
93
94
  summary: Attribute normalizer that excepts code blocks.