phony_rails 0.1.12 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +5 -0
- data/Gemfile.lock +20 -18
- data/README.md +13 -1
- data/Rakefile +4 -0
- data/lib/phony_rails.rb +10 -5
- data/lib/phony_rails/locales/fr.yml +0 -1
- data/lib/phony_rails/string_extensions.rb +11 -1
- data/lib/phony_rails/version.rb +1 -1
- data/spec/lib/phony_rails_spec.rb +70 -6
- metadata +2 -2
data/Gemfile
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
source :rubygems
|
2
|
+
|
3
|
+
# Preempt the default loading so that we don't get an unqualified Country class imported.
|
4
|
+
gem 'countries', :require => 'iso3166'
|
5
|
+
|
2
6
|
gemspec # Specify your gem's dependencies in phony_number.gemspec
|
3
7
|
|
4
8
|
# For testing
|
5
9
|
gem 'sqlite3'
|
6
10
|
|
11
|
+
gem 'rake'
|
7
12
|
gem 'rspec', '~> 2.11.0'
|
8
13
|
gem 'guard', '~> 1.2.0'
|
9
14
|
gem 'guard-bundler', '~> 1.0.0'
|
data/Gemfile.lock
CHANGED
@@ -1,30 +1,29 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
phony_rails (0.1.
|
5
|
-
activerecord (
|
6
|
-
countries (
|
7
|
-
phony (
|
4
|
+
phony_rails (0.1.13)
|
5
|
+
activerecord (>= 3.0)
|
6
|
+
countries (>= 0.8.2)
|
7
|
+
phony (>= 1.7.7)
|
8
8
|
|
9
9
|
GEM
|
10
10
|
remote: http://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activemodel (3.2.
|
13
|
-
activesupport (= 3.2.
|
12
|
+
activemodel (3.2.12)
|
13
|
+
activesupport (= 3.2.12)
|
14
14
|
builder (~> 3.0.0)
|
15
|
-
activerecord (3.2.
|
16
|
-
activemodel (= 3.2.
|
17
|
-
activesupport (= 3.2.
|
15
|
+
activerecord (3.2.12)
|
16
|
+
activemodel (= 3.2.12)
|
17
|
+
activesupport (= 3.2.12)
|
18
18
|
arel (~> 3.0.2)
|
19
19
|
tzinfo (~> 0.3.29)
|
20
|
-
activesupport (3.2.
|
20
|
+
activesupport (3.2.12)
|
21
21
|
i18n (~> 0.6)
|
22
22
|
multi_json (~> 1.0)
|
23
23
|
arel (3.0.2)
|
24
|
-
builder (3.0.
|
25
|
-
countries (0.8.
|
26
|
-
currencies (
|
27
|
-
currencies (>= 0.2.0)
|
24
|
+
builder (3.0.4)
|
25
|
+
countries (0.8.4)
|
26
|
+
currencies (>= 0.4.0)
|
28
27
|
currencies (0.4.0)
|
29
28
|
diff-lcs (1.1.3)
|
30
29
|
ffi (1.1.0)
|
@@ -37,13 +36,14 @@ GEM
|
|
37
36
|
guard (~> 1.1)
|
38
37
|
guard-rspec (1.2.0)
|
39
38
|
guard (>= 1.1)
|
40
|
-
i18n (0.6.
|
39
|
+
i18n (0.6.1)
|
41
40
|
listen (0.4.7)
|
42
41
|
rb-fchange (~> 0.0.5)
|
43
42
|
rb-fsevent (~> 0.9.1)
|
44
43
|
rb-inotify (~> 0.8.8)
|
45
|
-
multi_json (1.
|
46
|
-
phony (1.
|
44
|
+
multi_json (1.6.0)
|
45
|
+
phony (1.8.6)
|
46
|
+
rake (10.0.3)
|
47
47
|
rb-fchange (0.0.5)
|
48
48
|
ffi
|
49
49
|
rb-fsevent (0.9.1)
|
@@ -59,17 +59,19 @@ GEM
|
|
59
59
|
rspec-mocks (2.11.1)
|
60
60
|
sqlite3 (1.3.6)
|
61
61
|
thor (0.15.4)
|
62
|
-
tzinfo (0.3.
|
62
|
+
tzinfo (0.3.35)
|
63
63
|
|
64
64
|
PLATFORMS
|
65
65
|
ruby
|
66
66
|
|
67
67
|
DEPENDENCIES
|
68
|
+
countries
|
68
69
|
growl
|
69
70
|
guard (~> 1.2.0)
|
70
71
|
guard-bundler (~> 1.0.0)
|
71
72
|
guard-rspec (~> 1.2.0)
|
72
73
|
phony_rails!
|
74
|
+
rake
|
73
75
|
rb-fsevent
|
74
76
|
rspec (~> 2.11.0)
|
75
77
|
sqlite3
|
data/README.md
CHANGED
@@ -76,7 +76,19 @@ the i18n key is `:improbable_phone`
|
|
76
76
|
|
77
77
|
In your views use:
|
78
78
|
|
79
|
-
<%= "
|
79
|
+
<%= "311012341234".phony_formatted(:format => :international, :spaces => '-') %>
|
80
|
+
<%= "+31-10-12341234".phony_formatted(:format => :international, :spaces => '-') %>
|
81
|
+
<%= "+31(0)1012341234".phony_formatted(:format => :international, :spaces => '-') %>
|
82
|
+
|
83
|
+
To first normalize the String to a certain country use:
|
84
|
+
|
85
|
+
<%= "010-12341234".phony_formatted(normalize => :NL, :format => :international, :spaces => '-') %>
|
86
|
+
|
87
|
+
You can also use the bang method (phony_formatted!):
|
88
|
+
|
89
|
+
number = "010-12341234"
|
90
|
+
number.phony_formatted!(normalize => :NL, :format => :international)
|
91
|
+
number # => "+31 10 12341234"
|
80
92
|
|
81
93
|
### Find by normalized number
|
82
94
|
|
data/Rakefile
CHANGED
data/lib/phony_rails.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'phony'
|
2
|
-
require '
|
2
|
+
require 'iso3166'
|
3
3
|
require 'phony_rails/string_extensions'
|
4
4
|
require 'validators/phony_validator'
|
5
5
|
require 'phony_rails/version'
|
@@ -25,14 +25,13 @@ module PhonyRails
|
|
25
25
|
# Add country_number if missing
|
26
26
|
number = "#{country_number}#{number}" if not number =~ /^(00|\+)?#{country_number}/
|
27
27
|
end
|
28
|
-
number = Phony.normalize(number)
|
28
|
+
number = Phony.normalize(number) if Phony.plausible?(number)
|
29
29
|
return number.to_s
|
30
30
|
rescue
|
31
31
|
number # If all goes wrong .. we still return the original input.
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
module ActiveRecordExtension
|
34
|
+
module Extension
|
36
35
|
|
37
36
|
def self.extended(base)
|
38
37
|
base.send :include, InstanceMethods
|
@@ -102,7 +101,13 @@ module PhonyRails
|
|
102
101
|
|
103
102
|
end
|
104
103
|
|
105
|
-
ActiveRecord
|
104
|
+
# check whether it is ActiveRecord or Mongoid being used
|
105
|
+
ActiveRecord::Base.send :extend, PhonyRails::Extension if defined?(ActiveRecord)
|
106
|
+
Mongoid::Document.module_eval do
|
107
|
+
def self.included(base)
|
108
|
+
base.extend PhonyRails::Extension
|
109
|
+
end
|
110
|
+
end if defined?(Mongoid)
|
106
111
|
|
107
112
|
Dir["#{File.dirname(__FILE__)}/phony_rails/locales/*.yml"].each do |file|
|
108
113
|
I18n.load_path << file
|
@@ -4,8 +4,18 @@
|
|
4
4
|
# This enables:
|
5
5
|
# "31612341234".phony_formatted # => '06 12341234'
|
6
6
|
# "31612341234".phony_formatted(:spaces => '-') # => '06-12341234'
|
7
|
+
# To first normalize a String use:
|
8
|
+
# "010-12341234".phony_formatted(:normalize => :NL)
|
7
9
|
def phony_formatted(options = {})
|
8
|
-
|
10
|
+
normalize_country_code = options.delete(:normalize)
|
11
|
+
s = (normalize_country_code ? PhonyRails.normalize_number(self, :country_code => normalize_country_code.to_s) : self.gsub(/\D/, ''))
|
12
|
+
return if s.blank?
|
13
|
+
Phony.formatted(s, options.reverse_merge(:format => :national))
|
14
|
+
end
|
15
|
+
|
16
|
+
# The bang method
|
17
|
+
def phony_formatted!(options = {})
|
18
|
+
replace(self.phony_formatted(options))
|
9
19
|
end
|
10
20
|
|
11
21
|
end
|
data/lib/phony_rails/version.rb
CHANGED
@@ -1,10 +1,70 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
describe PhonyRails do
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
it "should not pollute the global namespace with a Country class" do
|
5
|
+
should_not be_const_defined "Country"
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'phony_format String extension' do
|
9
|
+
|
10
|
+
describe 'the bang method phony_formatted!' do
|
11
|
+
|
12
|
+
it "should change the String using the bang method" do
|
13
|
+
s = "0101234123"
|
14
|
+
s.phony_formatted!(:normalize => :NL, :format => :international).should eql('+31 10 1234123')
|
15
|
+
s.should eql("+31 10 1234123")
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'with normalize option' do
|
21
|
+
|
22
|
+
it "should phony_format" do
|
23
|
+
"0101234123".phony_formatted(:normalize => :NL).should eql('010 1234123')
|
24
|
+
"0101234123".phony_formatted(:normalize => :NL, :format => :international).should eql('+31 10 1234123')
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should not change original String" do
|
28
|
+
s = "0101234123"
|
29
|
+
s.phony_formatted(:normalize => :NL).should eql('010 1234123')
|
30
|
+
s.should eql("0101234123")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should phony_format String with country code" do
|
34
|
+
"31101234123".phony_formatted(:normalize => :NL).should eql('010 1234123')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should phony_format String with country code" do
|
38
|
+
"31101234123".phony_formatted(:normalize => :NL).should eql('010 1234123')
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should accept strings with non-digits in it" do
|
42
|
+
"+31-10-1234123".phony_formatted(:normalize => :NL, :format => :international, :spaces => '-').should eql('+31-10-1234123')
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should not change original String" do
|
48
|
+
s = "0101234123"
|
49
|
+
s.phony_formatted(:normalize => :NL).should eql('010 1234123')
|
50
|
+
s.should eql("0101234123")
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should phony_format a digits string with spaces String" do
|
54
|
+
"31 10 1234123".phony_formatted(:format => :international, :spaces => '-').should eql('+31-10-1234123')
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should phony_format a digits String" do
|
6
58
|
"31101234123".phony_formatted(:format => :international, :spaces => '-').should eql('+31-10-1234123')
|
7
59
|
end
|
60
|
+
|
61
|
+
it "returns nil if implausible phone" do
|
62
|
+
"this is not a phone".phony_formatted.should be_nil
|
63
|
+
end
|
64
|
+
|
65
|
+
it "returns nil on blank string" do
|
66
|
+
"".phony_formatted.should be_nil
|
67
|
+
end
|
8
68
|
end
|
9
69
|
|
10
70
|
describe 'PhonyRails#normalize_number' do
|
@@ -30,6 +90,10 @@ describe PhonyRails do
|
|
30
90
|
PhonyRails.normalize_number('+31-70-4157134', :country_code => 'NL').should eql('31704157134')
|
31
91
|
PhonyRails.normalize_number('0323-2269497', :country_code => 'BE').should eql('323232269497')
|
32
92
|
end
|
93
|
+
|
94
|
+
it "should not normalize an implausible number" do
|
95
|
+
PhonyRails.normalize_number('01').should eql('01')
|
96
|
+
end
|
33
97
|
end
|
34
98
|
|
35
99
|
describe 'defining ActiveRecord#phony_normalized_method' do
|
@@ -124,14 +188,14 @@ describe PhonyRails do
|
|
124
188
|
home.normalized_phone1_method(:country_code => 'NL').should eql('31308612906')
|
125
189
|
end
|
126
190
|
|
127
|
-
it "should use last passed options" do
|
191
|
+
it "should use last passed options" do
|
128
192
|
home = Home.new(:phone1_method => "(030) 8 61 29 06")
|
129
193
|
home.normalized_phone1_method(:country_code => 'NL').should eql('31308612906')
|
130
194
|
home.normalized_phone1_method(:country_code => 'DE').should eql('49308612906')
|
131
195
|
home.normalized_phone1_method(:country_code => nil).should eql('49308612906')
|
132
196
|
end
|
133
197
|
|
134
|
-
it "should use last object method" do
|
198
|
+
it "should use last object method" do
|
135
199
|
home = Home.new(:phone1_method => "(030) 8 61 29 06")
|
136
200
|
home.country_code = 'NL'
|
137
201
|
home.normalized_phone1_method.should eql('31308612906')
|
@@ -154,6 +218,6 @@ describe PhonyRails do
|
|
154
218
|
home = Home.new(:phone_number => "+31-(0)10-1234123")
|
155
219
|
home.valid?.should be_true
|
156
220
|
home.phone_number_as_normalized.should eql('31101234123')
|
157
|
-
end
|
221
|
+
end
|
158
222
|
end
|
159
|
-
end
|
223
|
+
end
|
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.
|
4
|
+
version: 0.2.0
|
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:
|
12
|
+
date: 2013-02-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: phony
|