phony_rails 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- phony_rails (0.5.0)
4
+ phony_rails (0.6.0)
5
5
  activesupport (>= 3.0)
6
6
  countries (>= 0.8.2)
7
- phony (= 2.0.0)
7
+ phony (~> 2.1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -49,7 +49,7 @@ GEM
49
49
  moped (1.5.1)
50
50
  multi_json (1.7.9)
51
51
  origin (1.1.0)
52
- phony (2.0.0)
52
+ phony (2.1.3)
53
53
  rake (10.1.0)
54
54
  rb-fsevent (0.9.3)
55
55
  rb-inotify (0.9.1)
data/README.md CHANGED
@@ -26,7 +26,6 @@ Or install it yourself as:
26
26
  For **ActiveRecord**, in your model add:
27
27
 
28
28
  class SomeModel < ActiveRecord::Base
29
-
30
29
  # Normalizes the attribute itself before validation
31
30
  phony_normalize :phone_number, :default_country_code => 'US'
32
31
 
@@ -108,7 +107,7 @@ You can also use the bang method (phony_formatted!):
108
107
 
109
108
  number = "010-12341234"
110
109
  number.phony_formatted!(:normalize => :NL, :format => :international)
111
- number # => "+31 10 12341234"
110
+ number # => "+31 10 123 41234"
112
111
 
113
112
  ### Find by normalized number
114
113
 
@@ -118,6 +117,9 @@ Say you want to find a record by a phone number. Best is to normalize user input
118
117
 
119
118
  ## Changelog
120
119
 
120
+ 0.6.0
121
+ * Support for Phony 2.1 by @pjg.
122
+
121
123
  0.5.0
122
124
  * Added :strict option to String#phony_formatted.
123
125
 
@@ -177,6 +179,7 @@ Say you want to find a record by a phone number. Best is to normalize user input
177
179
 
178
180
  ## TODO
179
181
 
182
+ * Fix phony v2.x issues.
180
183
  * Make this work: Home.find_by_normalized_phone_number(Home.normalize_number(params[:phone_number]))
181
184
  So we use Home.normalize_number instead of PhonyRails.normalize_number. This way we can use the same default_country_code.
182
185
  * Make country_code method configurable.
@@ -189,4 +192,4 @@ Say you want to find a record by a phone number. Best is to normalize user input
189
192
  4. Push to the branch (`git push origin my-new-feature`)
190
193
  5. Create new Pull Request
191
194
 
192
- Don't forget to add tests and run rspec before creating a pull request :)
195
+ Don't forget to add tests and run rspec before creating a pull request :)
@@ -1,3 +1,3 @@
1
1
  module PhonyRails
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/phony_rails.rb CHANGED
@@ -30,8 +30,8 @@ module PhonyRails
30
30
  # Add default_country_number if missing
31
31
  number = "#{default_country_number}#{number}" if not number =~ /^(00|\+|#{default_country_number})/
32
32
  end
33
- number = Phony.normalize(number) if Phony.plausible?(number)
34
- return number.to_s
33
+
34
+ Phony.normalize(number)
35
35
  rescue
36
36
  number # If all goes wrong .. we still return the original input.
37
37
  end
@@ -6,7 +6,27 @@ class PhonyPlausibleValidator < ActiveModel::EachValidator
6
6
  # Validates a String using Phony.plausible? method.
7
7
  def validate_each(record, attribute, value)
8
8
  return if value.blank?
9
- record.errors.add(attribute, options[:message] || :improbable_phone) if not Phony.plausible?(value, cc: options[:country_code])
9
+
10
+ @record = record
11
+ @record.errors.add(attribute, error_message) if not Phony.plausible?(value, cc: country_code_or_country_number)
12
+ end
13
+
14
+ private
15
+
16
+ def error_message
17
+ options[:message] || :improbable_phone
18
+ end
19
+
20
+ def country_code_or_country_number
21
+ options[:country_code] || record_country_number || record_country_code
22
+ end
23
+
24
+ def record_country_number
25
+ @record.country_number if @record.respond_to?(:country_number)
26
+ end
27
+
28
+ def record_country_code
29
+ @record.country_code if @record.respond_to?(:country_code)
10
30
  end
11
31
 
12
32
  end
data/phony_rails.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = PhonyRails::VERSION
18
18
 
19
- gem.add_dependency "phony", "= 1.9.0"
19
+ gem.add_dependency "phony", "~> 2.1"
20
20
  gem.add_dependency "countries", ">= 0.8.2"
21
21
  gem.add_dependency "activesupport", ">= 3.0"
22
22
  gem.add_development_dependency "activerecord", ">= 3.0"
@@ -11,8 +11,8 @@ describe PhonyRails do
11
11
 
12
12
  it "should change the String using the bang method" do
13
13
  s = "0101234123"
14
- s.phony_formatted!(:normalize => :NL, :format => :international).should eql('+31 10 1234123')
15
- s.should eql("+31 10 1234123")
14
+ s.phony_formatted!(:normalize => :NL, :format => :international).should eql('+31 10 123 4123')
15
+ s.should eql("+31 10 123 4123")
16
16
  end
17
17
 
18
18
  end
@@ -36,26 +36,26 @@ describe PhonyRails do
36
36
  describe 'with normalize option' do
37
37
 
38
38
  it "should phony_format" do
39
- "0101234123".phony_formatted(:normalize => :NL).should eql('010 1234123')
40
- "0101234123".phony_formatted(:normalize => :NL, :format => :international).should eql('+31 10 1234123')
39
+ "101234123".phony_formatted(:normalize => :NL).should eql('010 123 4123')
40
+ "101234123".phony_formatted(:normalize => :NL, :format => :international).should eql('+31 10 123 4123')
41
41
  end
42
42
 
43
43
  it "should not change original String" do
44
44
  s = "0101234123"
45
- s.phony_formatted(:normalize => :NL).should eql('010 1234123')
45
+ s.phony_formatted(:normalize => :NL).should eql('010 123 4123')
46
46
  s.should eql("0101234123")
47
47
  end
48
48
 
49
49
  it "should phony_format String with country code" do
50
- "31101234123".phony_formatted(:normalize => :NL).should eql('010 1234123')
50
+ "31101234123".phony_formatted(:normalize => :NL).should eql('010 123 4123')
51
51
  end
52
52
 
53
53
  it "should phony_format String with country code" do
54
- "31101234123".phony_formatted(:normalize => :NL).should eql('010 1234123')
54
+ "31101234123".phony_formatted(:normalize => :NL).should eql('010 123 4123')
55
55
  end
56
56
 
57
57
  it "should accept strings with non-digits in it" do
58
- "+31-10-1234123".phony_formatted(:normalize => :NL, :format => :international, :spaces => '-').should eql('+31-10-1234123')
58
+ "+31-10-1234123".phony_formatted(:normalize => :NL, :format => :international, :spaces => '-').should eql('+31-10-123-4123')
59
59
  end
60
60
 
61
61
  it "should phony_format String with country code different than normalized value" do
@@ -75,16 +75,16 @@ describe PhonyRails do
75
75
 
76
76
  it "should not change original String" do
77
77
  s = "0101234123"
78
- s.phony_formatted(:normalize => :NL).should eql('010 1234123')
78
+ s.phony_formatted(:normalize => :NL).should eql('010 123 4123')
79
79
  s.should eql("0101234123")
80
80
  end
81
81
 
82
82
  it "should phony_format a digits string with spaces String" do
83
- "31 10 1234123".phony_formatted(:format => :international, :spaces => '-').should eql('+31-10-1234123')
83
+ "31 10 1234123".phony_formatted(:format => :international, :spaces => '-').should eql('+31-10-123-4123')
84
84
  end
85
85
 
86
86
  it "should phony_format a digits String" do
87
- "31101234123".phony_formatted(:format => :international, :spaces => '-').should eql('+31-10-1234123')
87
+ "31101234123".phony_formatted(:format => :international, :spaces => '-').should eql('+31-10-123-4123')
88
88
  end
89
89
 
90
90
  it "returns nil if implausible phone" do
@@ -148,11 +148,11 @@ describe PhonyRails do
148
148
  PhonyRails.normalize_number('070-4157134', :country_code => 'NL').should eql('31704157134')
149
149
  PhonyRails.normalize_number('0031-70-4157134', :country_code => 'NL').should eql('31704157134')
150
150
  PhonyRails.normalize_number('+31-70-4157134', :country_code => 'NL').should eql('31704157134')
151
- PhonyRails.normalize_number('0323-2269497', :country_code => 'BE').should eql('323232269497')
151
+ PhonyRails.normalize_number('0323-2269497', :country_code => 'BE').should eql('3232269497')
152
152
  end
153
153
 
154
- it "should not normalize an implausible number" do
155
- PhonyRails.normalize_number('01').should eql('01')
154
+ it "should normalize even an implausible number" do
155
+ PhonyRails.normalize_number('01').should eql('1')
156
156
  end
157
157
  end
158
158
 
@@ -225,9 +225,9 @@ describe PhonyRails do
225
225
  end
226
226
 
227
227
  # Following examples have incomplete number
228
- it "should return nil if no country_code is known" do
228
+ it "should normalize even a unplausible number (no country code)" do
229
229
  model = model_klass.new(:phone_attribute => "(0)10-1234123")
230
- model.normalized_phone_attribute.should eql('11234123') # This actually is an incorrect number! (FIXME?)
230
+ model.normalized_phone_attribute.should eql('101234123')
231
231
  end
232
232
 
233
233
  it "should use country_code option" do
@@ -93,11 +93,11 @@ end
93
93
  #-----------------------------------------------------------------------------------------------------------------------
94
94
 
95
95
  I18n.locale = :en
96
- VALID_NUMBER = '1234567890'
96
+ VALID_NUMBER = '1 555 555 5555'
97
97
  AUSTRALIAN_NUMBER_WITH_COUNTRY_CODE = '61390133997'
98
98
  FORMATTED_AUSTRALIAN_NUMBER_WITH_COUNTRY_CODE = '+61 390133997'
99
- FRENCH_NUMBER_WITH_COUNTRY_CODE = '330627899541'
100
- FORMATTED_FRENCH_NUMBER_WITH_COUNTRY_CODE = '+33 0627899541'
99
+ FRENCH_NUMBER_WITH_COUNTRY_CODE = '33627899541'
100
+ FORMATTED_FRENCH_NUMBER_WITH_COUNTRY_CODE = '+33 627899541'
101
101
  INVALID_NUMBER = '123456789 123456789 123456789 123456789'
102
102
 
103
103
  #-----------------------------------------------------------------------------------------------------------------------
@@ -243,7 +243,7 @@ describe ActiveModel::Validations::HelperMethods do
243
243
  end
244
244
 
245
245
  it "should validate a well formatted valid number" do
246
- @home.phone_number = "+33 #{VALID_NUMBER}"
246
+ @home.phone_number = "+#{VALID_NUMBER}"
247
247
  @home.should be_valid
248
248
  end
249
249
 
@@ -272,7 +272,7 @@ describe ActiveModel::Validations::HelperMethods do
272
272
  end
273
273
 
274
274
  it "should invalidate a bad formatted valid number" do
275
- @home.phone_number = "+33 #{VALID_NUMBER}"
275
+ @home.phone_number = "+#{VALID_NUMBER}"
276
276
  @home.should_not be_valid
277
277
  @home.errors.messages.should include(:phone_number => ["is invalid"])
278
278
  end
metadata CHANGED
@@ -1,32 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phony_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Joost Hietbrink
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-12-24 00:00:00.000000000 Z
12
+ date: 2014-01-28 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: phony
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '='
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
- version: 1.9.0
21
+ version: '2.1'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '='
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
- version: 1.9.0
29
+ version: '2.1'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: countries
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ! '>='
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ! '>='
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: activesupport
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ! '>='
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ! '>='
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: activerecord
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ! '>='
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ! '>='
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: mongoid
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ! '>='
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ! '>='
81
92
  - !ruby/object:Gem::Version
@@ -110,26 +121,27 @@ files:
110
121
  homepage: https://github.com/joost/phony_rails
111
122
  licenses:
112
123
  - MIT
113
- metadata: {}
114
124
  post_install_message:
115
125
  rdoc_options: []
116
126
  require_paths:
117
127
  - lib
118
128
  required_ruby_version: !ruby/object:Gem::Requirement
129
+ none: false
119
130
  requirements:
120
131
  - - ! '>='
121
132
  - !ruby/object:Gem::Version
122
133
  version: '0'
123
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
124
136
  requirements:
125
137
  - - ! '>='
126
138
  - !ruby/object:Gem::Version
127
139
  version: '0'
128
140
  requirements: []
129
141
  rubyforge_project:
130
- rubygems_version: 2.1.11
142
+ rubygems_version: 1.8.23
131
143
  signing_key:
132
- specification_version: 4
144
+ specification_version: 3
133
145
  summary: This Gem adds useful methods to your Rails app to validate, display and save
134
146
  phone numbers.
135
147
  test_files:
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OGNmYjVlMTE5NDBiNGY5Y2MwZGE4ZDVlYzA2M2IxN2M1ZmI1MDBhMg==
5
- data.tar.gz: !binary |-
6
- ZDQ4MTIxNTdlNjVkYzNhNTZjMDQ5NWZiZDc0MTkzY2JkM2MxOWYwOQ==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- ODIxZDY3ZDdjY2NiZGU2OGE3NzdjNzI2YzcxYzc5OGQwNGEwZTYwOTA5YWJm
10
- MDAyZTc4Njc3NDRkZjU0ODc1NWRiYThjODUzNmI4MDljMzZiNWU1OTQ4YzNm
11
- NDMxNGJlMjA5ZWMwMDlkOWJmOTUyNDY0NDM2Mjg0MjcwZWFhMjI=
12
- data.tar.gz: !binary |-
13
- MzFjNDU4OWQxNTA5ZDFkOWE4M2U5ZTNiN2FmNjE4NzE4NDMyODZlOWQ1OTc4
14
- Y2JiMjkyYzkwMTQ5YTA1NjRhOWZlNjhmZDY0ZWU4NGUzODFkNmZkNjRkMjE3
15
- ODA5ZWI5ZTRiOTY3MzJjNTJmNDRlNjJjMjg4MmU0MjI2OGY5NzQ=