phony_rails 0.2.0 → 0.2.1
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.md +12 -9
- data/lib/phony_rails.rb +4 -6
- data/lib/phony_rails/version.rb +1 -1
- data/spec/lib/phony_rails_spec.rb +16 -1
- data/spec/spec_helper.rb +4 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -27,11 +27,11 @@ In your model add:
|
|
27
27
|
|
28
28
|
class SomeModel < ActiveRecord::Base
|
29
29
|
|
30
|
-
# Normalizes the attribute itself before validation
|
30
|
+
# Normalizes the attribute itself before validation
|
31
31
|
phony_normalize :phone_number, :default_country_code => 'US'
|
32
32
|
|
33
33
|
# Normalizes attribute before validation and saves into other attribute
|
34
|
-
phony_normalize :phone_number, :as => :phone_number_normalized_version, :default_country_code => 'US'
|
34
|
+
phony_normalize :phone_number, :as => :phone_number_normalized_version, :default_country_code => 'US'
|
35
35
|
|
36
36
|
# Creates method normalized_fax_number that returns the normalized version of fax_number
|
37
37
|
phony_normalized_method :fax_number
|
@@ -78,11 +78,11 @@ In your views use:
|
|
78
78
|
|
79
79
|
<%= "311012341234".phony_formatted(:format => :international, :spaces => '-') %>
|
80
80
|
<%= "+31-10-12341234".phony_formatted(:format => :international, :spaces => '-') %>
|
81
|
-
<%= "+31(0)1012341234".phony_formatted(:format => :international, :spaces => '-') %>
|
81
|
+
<%= "+31(0)1012341234".phony_formatted(:format => :international, :spaces => '-') %>
|
82
82
|
|
83
83
|
To first normalize the String to a certain country use:
|
84
84
|
|
85
|
-
<%= "010-12341234".phony_formatted(normalize => :NL, :format => :international, :spaces => '-') %>
|
85
|
+
<%= "010-12341234".phony_formatted(normalize => :NL, :format => :international, :spaces => '-') %>
|
86
86
|
|
87
87
|
You can also use the bang method (phony_formatted!):
|
88
88
|
|
@@ -98,28 +98,31 @@ Say you want to find a record by a phone number. Best is to normalize user input
|
|
98
98
|
|
99
99
|
## Changelog
|
100
100
|
|
101
|
+
0.2.1
|
102
|
+
* Better error handling by @k4nar
|
103
|
+
|
101
104
|
0.1.12
|
102
105
|
* Further loosened gemspec dependencies.
|
103
106
|
|
104
107
|
0.1.11
|
105
|
-
* Better gemspec dependency versions by rjhaveri.
|
108
|
+
* Better gemspec dependency versions by @rjhaveri.
|
106
109
|
|
107
110
|
0.1.10
|
108
111
|
* Changes from henning-koch.
|
109
112
|
* Some pending fixes.
|
110
113
|
|
111
114
|
0.1.8
|
112
|
-
* Improved validation methods by ddidier.
|
115
|
+
* Improved validation methods by @ddidier.
|
113
116
|
|
114
117
|
0.1.6
|
115
118
|
* Added :as option to phony_normalize.
|
116
119
|
|
117
120
|
0.1.5
|
118
|
-
* some tests and a helper method by ddidier.
|
121
|
+
* some tests and a helper method by @ddidier.
|
119
122
|
|
120
123
|
0.1.2
|
121
|
-
* Using countries gem as suggested by brutuscat.
|
122
|
-
* Fixes bugs mentioned by ddidier.
|
124
|
+
* Using countries gem as suggested by @brutuscat.
|
125
|
+
* Fixes bugs mentioned by @ddidier.
|
123
126
|
|
124
127
|
0.1.0
|
125
128
|
* Added specs.
|
data/lib/phony_rails.rb
CHANGED
@@ -49,6 +49,7 @@ module PhonyRails
|
|
49
49
|
options[:country_code] ||= self.country_code if self.respond_to?(:country_code)
|
50
50
|
attributes.each do |attribute|
|
51
51
|
attribute_name = options[:as] || attribute
|
52
|
+
raise RuntimeError, "No attribute #{attribute_name} found on #{self.class.name} (PhonyRails)" if not self.attribute_method?(attribute_name)
|
52
53
|
write_attribute(attribute_name, PhonyRails.normalize_number(read_attribute(attribute), options))
|
53
54
|
end
|
54
55
|
end
|
@@ -69,12 +70,9 @@ module PhonyRails
|
|
69
70
|
raise ArgumentError, ':as option can not be used on phony_normalize with multiple attribute names! (PhonyRails)' if attributes.size > 1
|
70
71
|
raise ArgumentError, "'#{options[:as]}' is not an attribute on #{self.name}. You might want to use 'phony_normalized_method :#{attributes.first}' (PhonyRails)" if not self.attribute_method?(options[:as])
|
71
72
|
end
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
self.before_validation do
|
76
|
-
set_phony_normalized_numbers(attributes, options)
|
77
|
-
end
|
73
|
+
# Add before validation that saves a normalized version of the phone number
|
74
|
+
self.before_validation do
|
75
|
+
set_phony_normalized_numbers(attributes, options)
|
78
76
|
end
|
79
77
|
end
|
80
78
|
|
data/lib/phony_rails/version.rb
CHANGED
@@ -14,7 +14,7 @@ describe PhonyRails do
|
|
14
14
|
s.phony_formatted!(:normalize => :NL, :format => :international).should eql('+31 10 1234123')
|
15
15
|
s.should eql("+31 10 1234123")
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
end
|
19
19
|
|
20
20
|
describe 'with normalize option' do
|
@@ -143,6 +143,12 @@ describe PhonyRails do
|
|
143
143
|
Home.phony_normalize(:phone_number, :as => 'phone_number_as_normalized')
|
144
144
|
}.should_not raise_error(ArgumentError)
|
145
145
|
end
|
146
|
+
|
147
|
+
it "should accept a non existing attribute name" do
|
148
|
+
lambda {
|
149
|
+
Dummy.phony_normalize(:non_existing_attribute)
|
150
|
+
}.should_not raise_error
|
151
|
+
end
|
146
152
|
end
|
147
153
|
|
148
154
|
describe 'using ActiveRecord#phony_normalized_method' do
|
@@ -219,5 +225,14 @@ describe PhonyRails do
|
|
219
225
|
home.valid?.should be_true
|
220
226
|
home.phone_number_as_normalized.should eql('31101234123')
|
221
227
|
end
|
228
|
+
|
229
|
+
it "should raise a RuntimeError at validation if the attribute doesn't exist" do
|
230
|
+
Dummy.phony_normalize :non_existing_attribute
|
231
|
+
|
232
|
+
dummy = Dummy.new
|
233
|
+
lambda {
|
234
|
+
dummy.valid?
|
235
|
+
}.should raise_error(RuntimeError)
|
236
|
+
end
|
222
237
|
end
|
223
238
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phony_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: phony
|
@@ -105,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
105
|
version: '0'
|
106
106
|
requirements: []
|
107
107
|
rubyforge_project:
|
108
|
-
rubygems_version: 1.8.
|
108
|
+
rubygems_version: 1.8.25
|
109
109
|
signing_key:
|
110
110
|
specification_version: 3
|
111
111
|
summary: This Gem adds useful methods to your Rails app to validate, display and save
|