simple_phone_number 0.1.8
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/Manifest +5 -0
- data/README.md +27 -0
- data/Rakefile +14 -0
- data/init.rb +1 -0
- data/lib/simple_phone_number.rb +63 -0
- data/simple_phone_number.gemspec +32 -0
- data.tar.gz.sig +0 -0
- metadata +95 -0
- metadata.gz.sig +2 -0
data/Manifest
ADDED
data/README.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# SimplePhoneNumber
|
2
|
+
|
3
|
+
## Install
|
4
|
+
|
5
|
+
gem install simple_phone_number
|
6
|
+
|
7
|
+
## Example
|
8
|
+
|
9
|
+
SimplePhoneNumber will accept the following phone formats:
|
10
|
+
1234567890, 123-456-7890, 123.456.7890, 123 456 7890 and (123) 456 7890
|
11
|
+
|
12
|
+
and save the record in 123-456-7890 format
|
13
|
+
|
14
|
+
class User < ActiveRecord::Base
|
15
|
+
simple_phone_number :home_phone, :cell_phone
|
16
|
+
end
|
17
|
+
|
18
|
+
## Options
|
19
|
+
|
20
|
+
|
21
|
+
simple_phone_number :home_phone, :validate => false, :allow_blank => true
|
22
|
+
simple_phone_number :home_phone, :validate_on => :update, :validate_if => proc{|record| record.something?}
|
23
|
+
simple_phone_number :home_phone, :validation_message => "should look like 1234567890, 123-456-7890, 123.456.7890, 123 456 7890 or (123) 456 7890"
|
24
|
+
|
25
|
+
Also,
|
26
|
+
|
27
|
+
validates_simple_phone_number :cell_phone, :if => proc{|record| record.home_phone.blank?}
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('simple_phone_number', '0.1.8') do |p|
|
6
|
+
p.description = "Validate and set phone number format"
|
7
|
+
p.url = "http://github.com/akennedy/simple_phone_number"
|
8
|
+
p.author = 'Andrew Kennedy'
|
9
|
+
p.email = 'andrew@jackrussellsoftware.com'
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
|
+
p.development_dependencies = []
|
12
|
+
end
|
13
|
+
|
14
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'simple_phone_number'
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module SimplePhoneNumber
|
2
|
+
|
3
|
+
def self.included(base)
|
4
|
+
base.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
attr_accessor :phone_number_attributes
|
9
|
+
|
10
|
+
def simple_phone_number(*args)
|
11
|
+
@phone_number_attributes = [] unless @phone_number_attributes.is_a? Array
|
12
|
+
|
13
|
+
options = args.extract_options!
|
14
|
+
attributes = args
|
15
|
+
attributes << :phone_number if attributes.empty?
|
16
|
+
|
17
|
+
unless options[:validate] === false
|
18
|
+
validates_simple_phone_number attributes, options
|
19
|
+
end
|
20
|
+
|
21
|
+
attributes.each do |attribute|
|
22
|
+
define_method "#{attribute}=" do |value|
|
23
|
+
phone = value.gsub(/^(?:\+?1[-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/, '\1-\2-\3')
|
24
|
+
write_attribute(attribute, phone)
|
25
|
+
end
|
26
|
+
|
27
|
+
@phone_number_attributes << attribute
|
28
|
+
end
|
29
|
+
|
30
|
+
include SimplePhoneNumber::InstanceMethods
|
31
|
+
end
|
32
|
+
|
33
|
+
def phone_number_attributes
|
34
|
+
Array(@phone_number_attributes)
|
35
|
+
end
|
36
|
+
|
37
|
+
def validates_simple_phone_number(*args)
|
38
|
+
options = clean_simple_phone_number_options(args.extract_options!)
|
39
|
+
message = options.delete(:message)
|
40
|
+
attributes = args
|
41
|
+
|
42
|
+
validates_each attributes, options do |record, attr_name, value|
|
43
|
+
record.errors.add attr_name, message || 'should look like 1234567890, 123-456-7890, 123.456.7890, 123 456 7890 or (123) 456 7890' unless record[attr_name] =~ /^(?:\+?1[-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
def clean_simple_phone_number_options(options = {})
|
49
|
+
options.inject({}) do |opts, (key, value)|
|
50
|
+
opts[key.to_s.sub(/^validat(es?|ion)_/, '').to_sym] = value
|
51
|
+
opts
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
module InstanceMethods
|
57
|
+
def phone_numbers
|
58
|
+
self.class.phone_number_attributes.map {|a| [a, read_attribute(a)]}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
ActiveRecord::Base.send(:include, SimplePhoneNumber)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{simple_phone_number}
|
5
|
+
s.version = "0.1.8"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Andrew Kennedy"]
|
9
|
+
s.cert_chain = ["/Users/andrew/gems/gem-public_cert.pem"]
|
10
|
+
s.date = %q{2011-01-13}
|
11
|
+
s.description = %q{Validate and set phone number format}
|
12
|
+
s.email = %q{andrew@jackrussellsoftware.com}
|
13
|
+
s.extra_rdoc_files = ["README.md", "lib/simple_phone_number.rb"]
|
14
|
+
s.files = ["Manifest", "README.md", "Rakefile", "init.rb", "lib/simple_phone_number.rb", "simple_phone_number.gemspec"]
|
15
|
+
s.homepage = %q{http://github.com/akennedy/simple_phone_number}
|
16
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Simple_phone_number", "--main", "README.md"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{simple_phone_number}
|
19
|
+
s.rubygems_version = %q{1.3.6}
|
20
|
+
s.signing_key = %q{/Users/andrew/gems/gem-private_key.pem}
|
21
|
+
s.summary = %q{Validate and set phone number format}
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 3
|
26
|
+
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
+
else
|
29
|
+
end
|
30
|
+
else
|
31
|
+
end
|
32
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_phone_number
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 8
|
9
|
+
version: 0.1.8
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Andrew Kennedy
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain:
|
16
|
+
- |
|
17
|
+
-----BEGIN CERTIFICATE-----
|
18
|
+
MIIDSjCCAjKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBLMQ8wDQYDVQQDDAZhbmRy
|
19
|
+
ZXcxIzAhBgoJkiaJk/IsZAEZFhNqYWNrcnVzc2VsbHNvZnR3YXJlMRMwEQYKCZIm
|
20
|
+
iZPyLGQBGRYDY29tMB4XDTExMDExMzA1MTExNVoXDTEyMDExMzA1MTExNVowSzEP
|
21
|
+
MA0GA1UEAwwGYW5kcmV3MSMwIQYKCZImiZPyLGQBGRYTamFja3J1c3NlbGxzb2Z0
|
22
|
+
d2FyZTETMBEGCgmSJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
23
|
+
ADCCAQoCggEBAK7PGPkcyalL956EqRqoFxS25B3hk0oN6RrTSjuoRLPeVx4SDf18
|
24
|
+
aB2ftDA8xv6XFqnU9fyWGxatmOqgOV1rwDW5hNblPqMPS+fE+2/BBoZVtNOVYGOx
|
25
|
+
90hXUQzWuyUFogS5QnAfAO6/vBQoYlEYLaQv3fdmMr4+3ykXnhnYIFZP4l9URft8
|
26
|
+
k+10rcxlGyuVPqeWFboshRIcyiHJNV62NBkA6G6czSg8+Hcc7/KBrzPFrEmLdqIY
|
27
|
+
3EPat47Yy4E3Cor5W09ZMR1uy51VDKObU9KO5waqQEZp7POvuSz63ACeefgqKAX1
|
28
|
+
VKtVcemN88aacmUcv5TEZ3nRK5ulUsmyNn8CAwEAAaM5MDcwCQYDVR0TBAIwADAL
|
29
|
+
BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFMzYlLy2JeP0glY5W3CKizmIVHa/MA0GCSqG
|
30
|
+
SIb3DQEBBQUAA4IBAQCmNwMI0uI8ZJ4io0kwZj5Oy1aZEZoTXZRATS1yj0vwYYXN
|
31
|
+
SPM8Tp+6SwMYcnhgU6QyQhkzw27/VBED4xzsCzREcB7HszIoHWXe9M0R2YPodZm/
|
32
|
+
eSdnfJE9JkyEBROQAcHnPgVwIemK31BS0dOalXD5f9Au1JCXVUUslYMHNNfA2Dbv
|
33
|
+
IMBFiJCRAvjqNwwwN1YxNYYkhN7vFWDn5CsT592eMaakR9fvuY2Tl06vnGKy9jzL
|
34
|
+
+RR8ofbx1u4BmkLJZrGGXa8onug/5jqq4g+XTzayAmrttJfkl5gzy7p8SagS2C+0
|
35
|
+
5m0JJ6tTwtIVpy+O6so+MeGKANaTRQiDceeOvcYl
|
36
|
+
-----END CERTIFICATE-----
|
37
|
+
|
38
|
+
date: 2011-01-13 00:00:00 -05:00
|
39
|
+
default_executable:
|
40
|
+
dependencies: []
|
41
|
+
|
42
|
+
description: Validate and set phone number format
|
43
|
+
email: andrew@jackrussellsoftware.com
|
44
|
+
executables: []
|
45
|
+
|
46
|
+
extensions: []
|
47
|
+
|
48
|
+
extra_rdoc_files:
|
49
|
+
- README.md
|
50
|
+
- lib/simple_phone_number.rb
|
51
|
+
files:
|
52
|
+
- Manifest
|
53
|
+
- README.md
|
54
|
+
- Rakefile
|
55
|
+
- init.rb
|
56
|
+
- lib/simple_phone_number.rb
|
57
|
+
- simple_phone_number.gemspec
|
58
|
+
has_rdoc: true
|
59
|
+
homepage: http://github.com/akennedy/simple_phone_number
|
60
|
+
licenses: []
|
61
|
+
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options:
|
64
|
+
- --line-numbers
|
65
|
+
- --inline-source
|
66
|
+
- --title
|
67
|
+
- Simple_phone_number
|
68
|
+
- --main
|
69
|
+
- README.md
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 1
|
85
|
+
- 2
|
86
|
+
version: "1.2"
|
87
|
+
requirements: []
|
88
|
+
|
89
|
+
rubyforge_project: simple_phone_number
|
90
|
+
rubygems_version: 1.3.6
|
91
|
+
signing_key:
|
92
|
+
specification_version: 3
|
93
|
+
summary: Validate and set phone number format
|
94
|
+
test_files: []
|
95
|
+
|
metadata.gz.sig
ADDED