ssn 0.3.0 → 1.0.0
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/.gitignore +2 -1
- data/.rspec +3 -0
- data/Gemfile +4 -0
- data/Guardfile +7 -0
- data/README.rdoc +2 -2
- data/Rakefile +1 -45
- data/lib/ssn.rb +6 -4
- data/lib/ssn/active_record_extensions.rb +33 -5
- data/lib/ssn/social_security_number.rb +16 -7
- data/lib/ssn/version.rb +3 -0
- data/spec/spec_helper.rb +7 -3
- data/spec/ssn/social_security_number_spec.rb +25 -18
- data/spec/ssn_spec.rb +83 -26
- data/ssn.gemspec +24 -55
- metadata +139 -24
- data/VERSION +0 -1
data/.gitignore
CHANGED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
guard 'rspec', :version => 2, :all_on_start => true, :all_after_pass => true, :cli => '--debugger --color --format doc' do
|
4
|
+
watch( %r{^spec/.+_spec\.rb$} )
|
5
|
+
watch( %r{^lib/(.+)\.rb$} ) { |m| "spec/#{m[1]}_spec.rb" }
|
6
|
+
watch( 'spec/spec_helper.rb' ) { "spec" }
|
7
|
+
end
|
data/README.rdoc
CHANGED
@@ -29,7 +29,7 @@ Encapsulates functionality for storing an unformatted SSN but formatting the SSN
|
|
29
29
|
|
30
30
|
Add to environment file:
|
31
31
|
|
32
|
-
gem 'ssn', '~>
|
32
|
+
gem 'ssn', '~>1.0.0'
|
33
33
|
|
34
34
|
Run:
|
35
35
|
|
@@ -39,7 +39,7 @@ Run:
|
|
39
39
|
|
40
40
|
Add to environment file:
|
41
41
|
|
42
|
-
config.gem 'ssn', :version => '~>
|
42
|
+
config.gem 'ssn', :version => '~>1.0.0', :source => 'http://gemcutter.org'
|
43
43
|
|
44
44
|
Run:
|
45
45
|
|
data/Rakefile
CHANGED
@@ -1,45 +1 @@
|
|
1
|
-
require
|
2
|
-
require 'rake'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "ssn"
|
8
|
-
gem.summary = %Q{Encapsulates functionality for storing an unformatted SSN but formatting the SSN on print.}
|
9
|
-
gem.description = %Q{Encapsulates functionality for storing an unformatted SSN but formatting the SSN on print.}
|
10
|
-
gem.email = "jason@lookforwardenterprises.com"
|
11
|
-
gem.homepage = "http://github.com/midas/ssn"
|
12
|
-
gem.authors = ["Jason Harrelson"]
|
13
|
-
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
|
-
end
|
16
|
-
Jeweler::GemcutterTasks.new
|
17
|
-
rescue LoadError
|
18
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
19
|
-
end
|
20
|
-
|
21
|
-
require 'spec/rake/spectask'
|
22
|
-
Spec::Rake::SpecTask.new(:spec) do |spec|
|
23
|
-
spec.libs << 'lib' << 'spec'
|
24
|
-
spec.spec_files = FileList['spec/**/*_spec.rb']
|
25
|
-
end
|
26
|
-
|
27
|
-
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
28
|
-
spec.libs << 'lib' << 'spec'
|
29
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
30
|
-
spec.rcov = true
|
31
|
-
end
|
32
|
-
|
33
|
-
task :spec => :check_dependencies
|
34
|
-
|
35
|
-
task :default => :spec
|
36
|
-
|
37
|
-
require 'rake/rdoctask'
|
38
|
-
Rake::RDocTask.new do |rdoc|
|
39
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
|
-
|
41
|
-
rdoc.rdoc_dir = 'rdoc'
|
42
|
-
rdoc.title = "ssn #{version}"
|
43
|
-
rdoc.rdoc_files.include('README*')
|
44
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
45
|
-
end
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/ssn.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__)) unless
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
-
require 'ssn/active_record_extensions'
|
4
|
-
require 'ssn/social_security_number'
|
5
3
|
|
6
4
|
module Ssn
|
7
|
-
|
5
|
+
|
6
|
+
autoload :ActiveRecordExtensions, 'ssn/active_record_extensions'
|
7
|
+
autoload :SocialSecurityNumber, 'ssn/social_security_number'
|
8
|
+
autoload :Version, 'ssn/version'
|
9
|
+
|
8
10
|
end
|
9
11
|
|
10
|
-
ActiveRecord::Base.send( :include, Ssn::ActiveRecordExtensions ) if defined?( ActiveRecord::Base )
|
12
|
+
ActiveRecord::Base.send( :include, Ssn::ActiveRecordExtensions ) if defined?( ActiveRecord::Base )
|
@@ -1,10 +1,13 @@
|
|
1
1
|
module Ssn
|
2
|
+
|
2
3
|
module ActiveRecordExtensions
|
4
|
+
|
3
5
|
def self.included( base )
|
4
6
|
base.extend ActsMethods
|
5
7
|
end
|
6
8
|
|
7
9
|
module ActsMethods
|
10
|
+
|
8
11
|
def has_ssn( *args )
|
9
12
|
options = args.extract_options!
|
10
13
|
|
@@ -21,9 +24,11 @@ module Ssn
|
|
21
24
|
end
|
22
25
|
|
23
26
|
alias_method :has_ssns, :has_ssn
|
27
|
+
|
24
28
|
end
|
25
29
|
|
26
30
|
module ClassMethods
|
31
|
+
|
27
32
|
def initialize_has_ssn_from_args( args )
|
28
33
|
if args.first.is_a? Symbol
|
29
34
|
initialize_has_ssn_from_string args.first.to_s
|
@@ -35,23 +40,46 @@ module Ssn
|
|
35
40
|
raise 'has_ssn can only accept a string, symbol or hash of strings or symbols'
|
36
41
|
end
|
37
42
|
end
|
43
|
+
private :initialize_has_ssn_from_args
|
38
44
|
|
39
45
|
def initialize_has_ssn_from_string( str )
|
40
46
|
define_method str do
|
41
|
-
|
47
|
+
self.send( "raw_#{str}" ).blank? ?
|
48
|
+
nil :
|
49
|
+
self.send( "raw_#{str}" ).gsub( Ssn::SocialSecurityNumber::UNFORMATTED_CAPTURE_REGEX, "\\1-\\2-\\3" )
|
42
50
|
end
|
43
51
|
|
44
52
|
define_method "#{str}=" do |value|
|
45
|
-
|
53
|
+
return if ssn_value_considered_blank?( value )
|
54
|
+
self.send "raw_#{str}=", value.gsub( /-/, "" )
|
46
55
|
end
|
47
|
-
end
|
48
56
|
|
49
|
-
|
57
|
+
define_method "raw_#{str}=" do |value|
|
58
|
+
return if ssn_value_considered_blank?( value )
|
59
|
+
super
|
60
|
+
end
|
50
61
|
end
|
62
|
+
private :initialize_has_ssn_from_string
|
63
|
+
|
51
64
|
end
|
52
65
|
|
53
66
|
module InstanceMethods
|
54
67
|
|
68
|
+
def considered_blank_ssns
|
69
|
+
[
|
70
|
+
'000000000',
|
71
|
+
'000-00-0000'
|
72
|
+
]
|
73
|
+
end
|
74
|
+
private :considered_blank_ssns
|
75
|
+
|
76
|
+
def ssn_value_considered_blank?( value )
|
77
|
+
considered_blank_ssns.include? value
|
78
|
+
end
|
79
|
+
private :ssn_value_considered_blank?
|
80
|
+
|
55
81
|
end
|
82
|
+
|
56
83
|
end
|
57
|
-
|
84
|
+
|
85
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Ssn
|
2
|
+
|
2
3
|
class SocialSecurityNumber
|
4
|
+
|
3
5
|
FORMATTED_REGEX = /^[0-9]{3}-?[0-9]{2}-?[0-9]{4}$/
|
4
6
|
UNFORMATTED_REGEX = /^[0-9]{9}$/
|
5
7
|
UNFORMATTED_CAPTURE_REGEX = /^([0-9]{3})([0-9]{2})([0-9]{4})$/
|
@@ -7,22 +9,29 @@ module Ssn
|
|
7
9
|
attr_reader :raw
|
8
10
|
|
9
11
|
def initialize( value=nil )
|
10
|
-
return if value.nil?
|
12
|
+
return if value.nil? || value.empty?
|
13
|
+
return if value == '000000000' || value == '000-00-0000'
|
11
14
|
@raw = SocialSecurityNumber.parse( value )
|
12
15
|
end
|
13
16
|
|
14
17
|
def formatted
|
15
|
-
|
16
|
-
'' :
|
17
|
-
SocialSecurityNumber.format( raw )
|
18
|
+
SocialSecurityNumber.format raw
|
18
19
|
end
|
19
20
|
|
20
21
|
def self.parse( value )
|
21
|
-
value.
|
22
|
+
value.nil? ?
|
23
|
+
nil :
|
24
|
+
value.gsub( /-/, "" )
|
22
25
|
end
|
23
26
|
|
24
27
|
def self.format( value )
|
25
|
-
parse( value )
|
28
|
+
parsed = parse( value )
|
29
|
+
|
30
|
+
parsed.nil? ?
|
31
|
+
nil :
|
32
|
+
parsed.gsub( UNFORMATTED_CAPTURE_REGEX,"\\1-\\2-\\3" )
|
26
33
|
end
|
34
|
+
|
27
35
|
end
|
28
|
-
|
36
|
+
|
37
|
+
end
|
data/lib/ssn/version.rb
ADDED
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
|
3
4
|
require 'rubygems'
|
4
5
|
require 'active_record'
|
6
|
+
require 'rails'
|
7
|
+
require 'bundler/setup'
|
8
|
+
|
5
9
|
require 'ssn'
|
6
|
-
require 'spec'
|
7
|
-
require 'spec/autorun'
|
8
10
|
|
9
|
-
|
11
|
+
RSpec.configure do |config|
|
12
|
+
|
13
|
+
config.mock_with :rspec
|
10
14
|
|
11
15
|
end
|
12
16
|
|
@@ -1,58 +1,65 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
before :each do
|
5
|
-
@klass = Ssn::SocialSecurityNumber
|
6
|
-
@instance = @klass.new
|
7
|
-
end
|
3
|
+
describe Ssn::SocialSecurityNumber do
|
8
4
|
|
9
5
|
it "should agree that the UNFORMATTED_REGEX is /^[0-9]{9}$/" do
|
10
|
-
|
6
|
+
described_class::UNFORMATTED_REGEX.should == /^[0-9]{9}$/
|
11
7
|
end
|
12
8
|
|
13
9
|
it "should agree that the FORMATTED_REGEX is /^[0-9]{3}-?[0-9]{2}-?[0-9]{4}$/" do
|
14
|
-
|
10
|
+
described_class::FORMATTED_REGEX.should == /^[0-9]{3}-?[0-9]{2}-?[0-9]{4}$/
|
15
11
|
end
|
16
12
|
|
17
13
|
it "should agree that the UNFORMATTED_CAPTURE_REGEX is /^([0-9]{3})([0-9]{2})([0-9]{4})$/" do
|
18
|
-
|
14
|
+
described_class::UNFORMATTED_CAPTURE_REGEX.should == /^([0-9]{3})([0-9]{2})([0-9]{4})$/
|
19
15
|
end
|
20
16
|
|
21
17
|
it "should initialize when given an unformatted SSN" do
|
22
|
-
|
18
|
+
described_class.new( '123456789' ).raw.should == '123456789'
|
23
19
|
end
|
24
20
|
|
25
21
|
it "should initialize when given an unformatted SSN" do
|
26
|
-
|
22
|
+
described_class.new( '123-45-6789' ).raw.should == '123456789'
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should initialize the SSN to empty when given 000000000" do
|
26
|
+
described_class.new( '000000000' ).raw.should be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should initialize the SSN to empty when given 000-00-0000" do
|
30
|
+
described_class.new( '000-00-0000' ).raw.should be_nil
|
27
31
|
end
|
28
32
|
|
29
33
|
it "should return a formatted SSN" do
|
30
|
-
|
34
|
+
described_class.new( '123456789' ).formatted.should == '123-45-6789'
|
31
35
|
end
|
32
36
|
|
33
37
|
it "should return a '' when a the SSN is blank" do
|
34
|
-
|
38
|
+
described_class.new( '' ).formatted.should be_nil
|
35
39
|
end
|
36
40
|
|
37
41
|
it "should return a '' when a the SSN is nil" do
|
38
|
-
|
42
|
+
described_class.new.formatted.should be_nil
|
39
43
|
end
|
40
44
|
|
41
45
|
context "well formed SSNs" do
|
46
|
+
|
42
47
|
it "should parse an SSN without formatting" do
|
43
|
-
|
48
|
+
described_class.parse( '123456789' ).should == '123456789'
|
44
49
|
end
|
45
50
|
|
46
51
|
it "should parse an SSN with formatting" do
|
47
|
-
|
52
|
+
described_class.parse( '123-45-6789' ).should == '123456789'
|
48
53
|
end
|
49
54
|
|
50
55
|
it "should format an SSN without formatting" do
|
51
|
-
|
56
|
+
described_class.format( '123456789' ).should == '123-45-6789'
|
52
57
|
end
|
53
58
|
|
54
59
|
it "should format an SSN with formatting" do
|
55
|
-
|
60
|
+
described_class.format( '123-45-6789' ).should == '123-45-6789'
|
56
61
|
end
|
62
|
+
|
57
63
|
end
|
58
|
-
|
64
|
+
|
65
|
+
end
|
data/spec/ssn_spec.rb
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe Ssn do
|
4
|
+
|
5
|
+
let :user do
|
6
|
+
User.new :name => 'John Smith',
|
7
|
+
:raw_ssn => '123456789'
|
8
|
+
end
|
9
|
+
|
4
10
|
describe "having ActiveRecord extensions" do
|
11
|
+
|
5
12
|
it "should respond to has_ssn" do
|
6
13
|
ActiveRecord::Base.respond_to?( :has_ssn ).should be_true
|
7
14
|
end
|
@@ -9,66 +16,116 @@ describe "Ssn" do
|
|
9
16
|
it "should respond to has_ssns" do
|
10
17
|
ActiveRecord::Base.respond_to?( :has_ssns ).should be_true
|
11
18
|
end
|
19
|
+
|
12
20
|
end
|
13
21
|
|
14
22
|
describe "when a user provides a symbol to the has_ssn method" do
|
15
|
-
before :each do
|
16
|
-
@user = User.new :name => 'John Smith', :raw_ssn => '123456789'
|
17
|
-
end
|
18
23
|
|
19
24
|
it "should respond to a getter method with the correct name" do
|
20
|
-
|
25
|
+
user.respond_to?( :ssn ).should be_true
|
21
26
|
end
|
22
27
|
|
23
28
|
it "should respond to a setter method with the correct name" do
|
24
|
-
|
29
|
+
user.respond_to?( :ssn= ).should be_true
|
25
30
|
end
|
26
31
|
|
27
32
|
it "should add a length validation on the raw ssn field" do
|
28
|
-
|
29
|
-
|
33
|
+
user.raw_ssn = '1234567890'
|
34
|
+
user.save.should be_false
|
30
35
|
end
|
31
36
|
|
32
37
|
it "should not allow any formatting in the raw ssn field" do
|
33
|
-
|
34
|
-
|
38
|
+
user.raw_ssn = '1-3456789'
|
39
|
+
user.save.should be_false
|
35
40
|
end
|
36
41
|
|
37
42
|
it "should not allow a mal-formed social security number" do
|
38
|
-
|
39
|
-
|
43
|
+
user.ssn = '1-3456789'
|
44
|
+
user.save.should be_false
|
40
45
|
end
|
46
|
+
|
41
47
|
end
|
42
48
|
|
43
49
|
describe "in general" do
|
44
|
-
before :each do
|
45
|
-
@user = User.new :name => 'John Smith', :raw_ssn => '123456789'
|
46
|
-
end
|
47
50
|
|
48
51
|
it "should return nil if the raw ssn is nil" do
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
+
user.raw_ssn = nil
|
53
|
+
user.save!
|
54
|
+
user.ssn.should be_nil
|
52
55
|
end
|
53
56
|
|
54
57
|
it "should return nil if the raw ssn is ''" do
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
+
user.raw_ssn = ''
|
59
|
+
user.save!
|
60
|
+
user.ssn.should be_nil
|
58
61
|
end
|
59
62
|
|
60
63
|
it "should return a formatted social security number" do
|
61
|
-
|
64
|
+
user.ssn.should == '123-45-6789'
|
62
65
|
end
|
63
66
|
|
64
67
|
it "should set ssn" do
|
65
|
-
|
66
|
-
|
68
|
+
user.ssn = '234-56-7890'
|
69
|
+
user.ssn.should == '234-56-7890'
|
67
70
|
end
|
68
71
|
|
69
72
|
it "should strip formatting from a social security number" do
|
70
|
-
|
71
|
-
|
73
|
+
user.ssn = '234-56-7890'
|
74
|
+
user.raw_ssn.should == '234567890'
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'when the ssn is set to 000000000' do
|
80
|
+
|
81
|
+
let :user do
|
82
|
+
User.new :name => 'John Smith',
|
83
|
+
:ssn => '000000000'
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should agree that the ssn is nil" do
|
87
|
+
user.ssn.should be_nil
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'when the ssn is set to 000-00-0000' do
|
93
|
+
|
94
|
+
let :user do
|
95
|
+
User.new :name => 'John Smith',
|
96
|
+
:ssn => '000-00-0000'
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should agree that the ssn is nil" do
|
100
|
+
user.ssn.should be_nil
|
72
101
|
end
|
102
|
+
|
73
103
|
end
|
104
|
+
|
105
|
+
context 'when the raw_ssn is set to 000000000' do
|
106
|
+
|
107
|
+
let :user do
|
108
|
+
User.new :name => 'John Smith',
|
109
|
+
:raw_ssn => '000000000'
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should agree that the raw_ssn is nil" do
|
113
|
+
user.raw_ssn.should be_nil
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
context 'when the ssn is set to 000-00-0000' do
|
119
|
+
|
120
|
+
let :user do
|
121
|
+
User.new :name => 'John Smith',
|
122
|
+
:raw_ssn => '000-00-0000'
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should agree that the raw_ssn is nil" do
|
126
|
+
user.raw_ssn.should be_nil
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
74
131
|
end
|
data/ssn.gemspec
CHANGED
@@ -1,63 +1,32 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ssn/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
9
|
-
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
6
|
+
s.name = "ssn"
|
7
|
+
s.version = Ssn::VERSION
|
8
|
+
s.authors = ["C. Jason Harrelson (midas)"]
|
9
|
+
s.email = ["jason@lookforwardenterprises.com"]
|
10
|
+
s.homepage = "https://github.com/midas/ssn"
|
11
|
+
s.summary = %q{Easily use SSNs in your app.}
|
13
12
|
s.description = %q{Encapsulates functionality for storing an unformatted SSN but formatting the SSN on print.}
|
14
|
-
|
15
|
-
s.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
s.files
|
20
|
-
".document",
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.rdoc",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"lib/ssn.rb",
|
27
|
-
"lib/ssn/active_record_extensions.rb",
|
28
|
-
"lib/ssn/social_security_number.rb",
|
29
|
-
"script/console",
|
30
|
-
"script/environment.rb",
|
31
|
-
"script/seed.rb",
|
32
|
-
"spec/database.yml",
|
33
|
-
"spec/spec.opts",
|
34
|
-
"spec/spec_helper.rb",
|
35
|
-
"spec/ssn/social_security_number_spec.rb",
|
36
|
-
"spec/ssn_spec.rb",
|
37
|
-
"ssn.gemspec"
|
38
|
-
]
|
39
|
-
s.homepage = %q{http://github.com/midas/ssn}
|
40
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
13
|
+
|
14
|
+
s.rubyforge_project = "ssn"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
41
19
|
s.require_paths = ["lib"]
|
42
|
-
s.rubygems_version = %q{1.3.7}
|
43
|
-
s.summary = %q{Encapsulates functionality for storing an unformatted SSN but formatting the SSN on print.}
|
44
|
-
s.test_files = [
|
45
|
-
"spec/spec_helper.rb",
|
46
|
-
"spec/ssn/social_security_number_spec.rb",
|
47
|
-
"spec/ssn_spec.rb"
|
48
|
-
]
|
49
20
|
|
50
|
-
|
51
|
-
|
52
|
-
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_development_dependency "rspec"
|
23
|
+
s.add_development_dependency "rails", "3.1.0"
|
24
|
+
s.add_development_dependency "sqlite3"
|
25
|
+
s.add_development_dependency "guard"
|
26
|
+
s.add_development_dependency 'rb-fsevent'
|
27
|
+
s.add_development_dependency 'growl'
|
28
|
+
s.add_development_dependency 'guard-rspec'
|
29
|
+
s.add_development_dependency 'ruby-debug'
|
53
30
|
|
54
|
-
|
55
|
-
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
56
|
-
else
|
57
|
-
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
58
|
-
end
|
59
|
-
else
|
60
|
-
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
61
|
-
end
|
31
|
+
s.add_runtime_dependency "rails"
|
62
32
|
end
|
63
|
-
|
metadata
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ssn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
|
-
- Jason Harrelson
|
13
|
+
- C. Jason Harrelson (midas)
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
19
|
-
default_executable:
|
18
|
+
date: 2012-02-11 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: rspec
|
@@ -26,33 +25,148 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
28
|
+
hash: 3
|
30
29
|
segments:
|
31
|
-
-
|
32
|
-
|
33
|
-
- 9
|
34
|
-
version: 1.2.9
|
30
|
+
- 0
|
31
|
+
version: "0"
|
35
32
|
type: :development
|
36
33
|
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rails
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - "="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 3
|
45
|
+
- 1
|
46
|
+
- 0
|
47
|
+
version: 3.1.0
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: sqlite3
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
type: :development
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: guard
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
type: :development
|
77
|
+
version_requirements: *id004
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rb-fsevent
|
80
|
+
prerelease: false
|
81
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
type: :development
|
91
|
+
version_requirements: *id005
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: growl
|
94
|
+
prerelease: false
|
95
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
104
|
+
type: :development
|
105
|
+
version_requirements: *id006
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: guard-rspec
|
108
|
+
prerelease: false
|
109
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
hash: 3
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
version: "0"
|
118
|
+
type: :development
|
119
|
+
version_requirements: *id007
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
name: ruby-debug
|
122
|
+
prerelease: false
|
123
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
hash: 3
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
version: "0"
|
132
|
+
type: :development
|
133
|
+
version_requirements: *id008
|
134
|
+
- !ruby/object:Gem::Dependency
|
135
|
+
name: rails
|
136
|
+
prerelease: false
|
137
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
hash: 3
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
version: "0"
|
146
|
+
type: :runtime
|
147
|
+
version_requirements: *id009
|
37
148
|
description: Encapsulates functionality for storing an unformatted SSN but formatting the SSN on print.
|
38
|
-
email:
|
149
|
+
email:
|
150
|
+
- jason@lookforwardenterprises.com
|
39
151
|
executables: []
|
40
152
|
|
41
153
|
extensions: []
|
42
154
|
|
43
|
-
extra_rdoc_files:
|
44
|
-
|
45
|
-
- README.rdoc
|
155
|
+
extra_rdoc_files: []
|
156
|
+
|
46
157
|
files:
|
47
158
|
- .document
|
48
159
|
- .gitignore
|
160
|
+
- .rspec
|
161
|
+
- Gemfile
|
162
|
+
- Guardfile
|
49
163
|
- LICENSE
|
50
164
|
- README.rdoc
|
51
165
|
- Rakefile
|
52
|
-
- VERSION
|
53
166
|
- lib/ssn.rb
|
54
167
|
- lib/ssn/active_record_extensions.rb
|
55
168
|
- lib/ssn/social_security_number.rb
|
169
|
+
- lib/ssn/version.rb
|
56
170
|
- script/console
|
57
171
|
- script/environment.rb
|
58
172
|
- script/seed.rb
|
@@ -62,13 +176,12 @@ files:
|
|
62
176
|
- spec/ssn/social_security_number_spec.rb
|
63
177
|
- spec/ssn_spec.rb
|
64
178
|
- ssn.gemspec
|
65
|
-
|
66
|
-
homepage: http://github.com/midas/ssn
|
179
|
+
homepage: https://github.com/midas/ssn
|
67
180
|
licenses: []
|
68
181
|
|
69
182
|
post_install_message:
|
70
|
-
rdoc_options:
|
71
|
-
|
183
|
+
rdoc_options: []
|
184
|
+
|
72
185
|
require_paths:
|
73
186
|
- lib
|
74
187
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -91,12 +204,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
204
|
version: "0"
|
92
205
|
requirements: []
|
93
206
|
|
94
|
-
rubyforge_project:
|
95
|
-
rubygems_version: 1.
|
207
|
+
rubyforge_project: ssn
|
208
|
+
rubygems_version: 1.8.10
|
96
209
|
signing_key:
|
97
210
|
specification_version: 3
|
98
|
-
summary:
|
211
|
+
summary: Easily use SSNs in your app.
|
99
212
|
test_files:
|
213
|
+
- spec/database.yml
|
214
|
+
- spec/spec.opts
|
100
215
|
- spec/spec_helper.rb
|
101
216
|
- spec/ssn/social_security_number_spec.rb
|
102
217
|
- spec/ssn_spec.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.3.0
|