validates_cpf_cnpj 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in validates_cpf_cnpj.gemspec
4
+ gemspec
data/README.rdoc ADDED
@@ -0,0 +1,66 @@
1
+ = ValidatesCpfCnpj
2
+
3
+ * Source: http://github.com/rfs/validates_cpf_cnpj
4
+ * Bugs: http://github.com/rfs/validates_cpf_cnpj/issues
5
+
6
+ == Description
7
+
8
+ CPF and CNPJ validations for ActiveModel and Rails.
9
+
10
+ == Installation
11
+
12
+ As gem:
13
+
14
+ # in Gemfile
15
+ gem 'validates_cpf_cnpj'
16
+
17
+ # Run bundler
18
+ $ bundle install
19
+
20
+ == Usage
21
+
22
+ Validating a CPF attribute:
23
+
24
+ class Patient
25
+ validates_cpf :cpf_attr
26
+ # or
27
+ validates :cpf_attr, :cpf => true
28
+ end
29
+
30
+ Validating a CNPJ attribute:
31
+
32
+ class Supplier
33
+ validates_cnpj :cnpj_attr
34
+ # or
35
+ validates :cnpj_attr, :cnpj => true
36
+ end
37
+
38
+ Validating an attribute that can store both CPF or CNPJ:
39
+
40
+ class Customer
41
+ validates_cpf_or_cnpj :cpf_cnpj_attr
42
+ # or
43
+ validates :cpf_cnpj_attr, :cpf_or_cnpj => true
44
+ end
45
+
46
+ Regular validation options:
47
+
48
+ :allow_nil - Allow a nil value to be valid
49
+ :allow_blank - Allows a nil or empty string value to be valid
50
+ :if - Execute validation when :if evaluates true
51
+ :unless - Execute validation when :unless evaluates false
52
+ :on - Specify validation context (e.g :save, :create or :update). Default is :save
53
+
54
+ == Contributing
55
+
56
+ Feel free to fork, fix and send me a pull request.
57
+
58
+ == Maintainers
59
+
60
+ * {Reginaldo Francisco}[http://github.com/rfs]
61
+
62
+ == License
63
+
64
+ Released under the MIT license:
65
+
66
+ * http://www.opensource.org/licenses/MIT
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :test => :spec
@@ -0,0 +1,23 @@
1
+ module ValidatesCpfCnpj
2
+ module Cnpj
3
+ def self.valid?(value)
4
+ value.gsub!(/[^0-9]/, '')
5
+ digit = value.slice(-2, 2)
6
+ control = ''
7
+ if value.size == 14
8
+ factor = 0
9
+ 2.times do |i|
10
+ sum = 0;
11
+ 12.times do |j|
12
+ sum += value.slice(j, 1).to_i * ((11 + i - j) % 8 + 2)
13
+ end
14
+ sum += factor * 2 if i == 1
15
+ factor = 11 - sum % 11
16
+ factor = 0 if factor > 9
17
+ control << factor.to_s
18
+ end
19
+ end
20
+ control == digit
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module ValidatesCpfCnpj
2
+ module Cpf
3
+ def self.valid?(value)
4
+ value.gsub!(/[^0-9]/, '')
5
+ digit = value.slice(-2, 2)
6
+ control = ''
7
+ if value.size == 11
8
+ factor = 0
9
+ 2.times do |i|
10
+ sum = 0
11
+ 9.times do |j|
12
+ sum += value.slice(j, 1).to_i * (10 + i - j)
13
+ end
14
+ sum += (factor * 2) if i == 1
15
+ factor = (sum * 10) % 11
16
+ factor = 0 if factor == 10
17
+ control << factor.to_s
18
+ end
19
+ end
20
+ control == digit
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ module ValidatesCpfCnpj
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,56 @@
1
+ require 'active_model'
2
+ require 'validates_cpf_cnpj/cpf'
3
+ require 'validates_cpf_cnpj/cnpj'
4
+
5
+ module ActiveModel
6
+ module Validations
7
+ class CpfOrCnpjValidator < ActiveModel::EachValidator
8
+ include ValidatesCpfCnpj
9
+
10
+ def validate_each(record, attr_name, value)
11
+ return if (options[:allow_nil] and value.nil?) or (options[:allow_blank] and value.blank?)
12
+ return if (options[:if] == false) or (options[:unless] == true)
13
+ return if (options[:on].to_s == 'create' and not record.new_record?) or (options[:on].to_s == 'update' and record.new_record?)
14
+
15
+ if value.to_s.gsub(/[^0-9]/, '').length <= 11
16
+ if (not value.to_s.match(/\A\d{11}\z/) and not value.to_s.match(/\A\d{3}\.\d{3}\.\d{3}\-\d{2}\z/)) or not Cpf.valid?(value)
17
+ record.errors.add(attr_name)
18
+ end
19
+ else
20
+ if (not value.to_s.match(/\A\d{14}\z/) and not value.to_s.match(/\A\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}\z/)) or not Cnpj.valid?(value)
21
+ record.errors.add(attr_name)
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ class CpfValidator < CpfOrCnpjValidator
28
+ end
29
+
30
+ class CnpjValidator < CpfOrCnpjValidator
31
+ end
32
+
33
+ module HelperMethods
34
+ def validates_cpf(*attr_names)
35
+ configuration = { :on => :save }
36
+ configuration.update(attr_names.extract_options!)
37
+ raise ArgumentError, "You need to supply at least one attribute" if attr_names.empty?
38
+ validates_with CpfValidator, _merge_attributes(attr_names).merge(configuration)
39
+ end
40
+
41
+ def validates_cnpj(*attr_names)
42
+ configuration = { :on => :save }
43
+ configuration.update(attr_names.extract_options!)
44
+ raise ArgumentError, "You need to supply at least one attribute" if attr_names.empty?
45
+ validates_with CnpjValidator, _merge_attributes(attr_names).merge(configuration)
46
+ end
47
+
48
+ def validates_cpf_or_cnpj(*attr_names)
49
+ configuration = { :on => :save }
50
+ configuration.update(attr_names.extract_options!)
51
+ raise ArgumentError, "You need to supply at least one attribute" if attr_names.empty?
52
+ validates_with CpfOrCnpjValidator, _merge_attributes(attr_names).merge(configuration)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,452 @@
1
+ require 'spec_helper'
2
+
3
+ describe ValidatesCpfCnpj do
4
+ describe 'validates_cpf' do
5
+ it 'should raise an ArgumentError when no attribute is informed' do
6
+ person = Person.new
7
+ lambda { person.validates_cpf }.should raise_exception(ArgumentError, 'You need to supply at least one attribute')
8
+ end
9
+
10
+ context 'should be invalid when' do
11
+ it 'value is 1234567890' do
12
+ person = Person.new(:code => '1234567890')
13
+ person.validates_cpf(:code)
14
+ person.errors.should_not be_empty
15
+ end
16
+
17
+ it 'value is 12345678901' do
18
+ person = Person.new(:code => '12345678901')
19
+ person.validates_cpf(:code)
20
+ person.errors.should_not be_empty
21
+ end
22
+
23
+ it 'value is ABC80033787883' do
24
+ person = Person.new(:code => 'ABC45678901')
25
+ person.validates_cpf(:code)
26
+ person.errors.should_not be_empty
27
+ end
28
+
29
+ it 'value is 123.456.789-01' do
30
+ person = Person.new(:code => '123.456.789-01')
31
+ person.validates_cpf(:code)
32
+ person.errors.should_not be_empty
33
+ end
34
+
35
+ it 'value is 800337.878-83' do
36
+ person = Person.new(:code => '800337.878-83')
37
+ person.validates_cpf(:code)
38
+ person.errors.should_not be_empty
39
+ end
40
+
41
+ it 'value is 800337878-83' do
42
+ person = Person.new(:code => '800337878-83')
43
+ person.validates_cpf(:code)
44
+ person.errors.should_not be_empty
45
+ end
46
+
47
+ it 'value is nil' do
48
+ person = Person.new(:code => nil)
49
+ person.validates_cpf(:code)
50
+ person.errors.should_not be_empty
51
+ end
52
+
53
+ it 'value is empty' do
54
+ person = Person.new(:code => '')
55
+ person.validates_cpf(:code)
56
+ person.errors.should_not be_empty
57
+ end
58
+ end
59
+
60
+ context 'should be valid when' do
61
+ it 'value is 80033787883' do
62
+ person = Person.new(:code => '80033787883')
63
+ person.validates_cpf(:code)
64
+ person.errors.should be_empty
65
+ end
66
+
67
+ it 'value is 800.337.878-83' do
68
+ person = Person.new(:code => '800.337.878-83')
69
+ person.validates_cpf(:code)
70
+ person.errors.should be_empty
71
+ end
72
+
73
+ it 'value is nil and :allow_nil or :allow_blank is true' do
74
+ person = Person.new(:code => nil)
75
+ person.validates_cpf(:code, :allow_nil => true)
76
+ person.errors.should be_empty
77
+ person.validates_cpf(:code, :allow_blank => true)
78
+ person.errors.should be_empty
79
+ end
80
+
81
+ it 'value is empty and :allow_blank is true' do
82
+ person = Person.new(:code => '')
83
+ person.validates_cpf(:code, :allow_blank => true)
84
+ person.errors.should be_empty
85
+ person.validates_cpf(:code, :allow_nil => true)
86
+ person.errors.should_not be_empty
87
+ end
88
+
89
+ it ':if option evaluates false' do
90
+ person = Person.new(:code => '12345678901')
91
+ person.validates_cpf(:code, :if => false)
92
+ person.errors.should be_empty
93
+ end
94
+
95
+ it ':unless option evaluates true' do
96
+ person = Person.new(:code => '12345678901')
97
+ person.validates_cpf(:code, :unless => true)
98
+ person.errors.should be_empty
99
+ end
100
+
101
+ it ':on option is :create and the model instance is not a new record' do
102
+ person = Person.new(:code => '12345678901')
103
+ person.stub!(:new_record?, false)
104
+ person.validates_cpf(:code, :on => :create)
105
+ person.errors.should be_empty
106
+ end
107
+
108
+ it ':on option is :update and the model instance is a new record' do
109
+ person = Person.new(:code => '12345678901')
110
+ person.validates_cpf(:code, :on => :update)
111
+ person.errors.should be_empty
112
+ end
113
+ end
114
+ end
115
+
116
+ describe 'validates_cnpj' do
117
+ it 'should raise an ArgumentError when no attribute is informed' do
118
+ person = Person.new
119
+ lambda { person.validates_cnpj }.should raise_exception(ArgumentError, 'You need to supply at least one attribute')
120
+ end
121
+
122
+ context 'should be invalid when' do
123
+ it 'value is 1234567890123' do
124
+ person = Person.new(:code => '1234567890123')
125
+ person.validates_cnpj(:code)
126
+ person.errors.should_not be_empty
127
+ end
128
+
129
+ it 'value is 12345678901234' do
130
+ person = Person.new(:code => '12345678901234')
131
+ person.validates_cnpj(:code)
132
+ person.errors.should_not be_empty
133
+ end
134
+
135
+ it 'value is 123456789012345' do
136
+ person = Person.new(:code => '123456789012345')
137
+ person.validates_cnpj(:code)
138
+ person.errors.should_not be_empty
139
+ end
140
+
141
+ it 'value is ABC05393625000184' do
142
+ person = Person.new(:code => 'ABC05393625000184')
143
+ person.validates_cnpj(:code)
144
+ person.errors.should_not be_empty
145
+ end
146
+
147
+ it 'value is 12.345.678/9012-34' do
148
+ person = Person.new(:code => '12.345.678/9012-34')
149
+ person.validates_cnpj(:code)
150
+ person.errors.should_not be_empty
151
+ end
152
+
153
+ it 'value is 05393.625/0001-84' do
154
+ person = Person.new(:code => '05393.625/0001-84')
155
+ person.validates_cnpj(:code)
156
+ person.errors.should_not be_empty
157
+ end
158
+
159
+ it 'value is 05393.6250001-84' do
160
+ person = Person.new(:code => '05393.6250001-84')
161
+ person.validates_cnpj(:code)
162
+ person.errors.should_not be_empty
163
+ end
164
+
165
+ it 'value is nil' do
166
+ person = Person.new(:code => nil)
167
+ person.validates_cnpj(:code)
168
+ person.errors.should_not be_empty
169
+ end
170
+
171
+ it 'value is empty' do
172
+ person = Person.new(:code => '')
173
+ person.validates_cnpj(:code)
174
+ person.errors.should_not be_empty
175
+ end
176
+ end
177
+
178
+ context 'should be valid when' do
179
+ it 'value is 05393625000184' do
180
+ person = Person.new(:code => '05393625000184')
181
+ person.validates_cnpj(:code)
182
+ person.errors.should be_empty
183
+ end
184
+
185
+ it 'value is 05.393.625/0001-84' do
186
+ person = Person.new(:code => '05.393.625/0001-84')
187
+ person.validates_cnpj(:code)
188
+ person.errors.should be_empty
189
+ end
190
+
191
+ it 'value is nil and :allow_nil or :allow_blank is true' do
192
+ person = Person.new(:code => nil)
193
+ person.validates_cnpj(:code, :allow_nil => true)
194
+ person.errors.should be_empty
195
+ person.validates_cnpj(:code, :allow_blank => true)
196
+ person.errors.should be_empty
197
+ end
198
+
199
+ it 'value is empty and :allow_blank is true' do
200
+ person = Person.new(:code => '')
201
+ person.validates_cnpj(:code, :allow_blank => true)
202
+ person.errors.should be_empty
203
+ person.validates_cnpj(:code, :allow_nil => true)
204
+ person.errors.should_not be_empty
205
+ end
206
+
207
+ it ':if option evaluates false' do
208
+ person = Person.new(:code => '12345678901234')
209
+ person.validates_cnpj(:code, :if => false)
210
+ person.errors.should be_empty
211
+ end
212
+
213
+ it ':unless option evaluates true' do
214
+ person = Person.new(:code => '12345678901234')
215
+ person.validates_cnpj(:code, :unless => true)
216
+ person.errors.should be_empty
217
+ end
218
+
219
+ it ':on option is :create and the model instance is not a new record' do
220
+ person = Person.new(:code => '12345678901')
221
+ person.stub!(:new_record?, false)
222
+ person.validates_cnpj(:code, :on => :create)
223
+ person.errors.should be_empty
224
+ end
225
+
226
+ it ':on option is :update and the model instance is a new record' do
227
+ person = Person.new(:code => '12345678901')
228
+ person.validates_cnpj(:code, :on => :update)
229
+ person.errors.should be_empty
230
+ end
231
+ end
232
+ end
233
+
234
+ describe 'validates_cpf_or_cnpj' do
235
+ it 'should raise an ArgumentError when no attribute is informed' do
236
+ person = Person.new
237
+ lambda { person.validates_cpf_or_cnpj }.should raise_exception(ArgumentError, 'You need to supply at least one attribute')
238
+ end
239
+
240
+ context 'should be invalid when' do
241
+ it 'value is 1234567890' do
242
+ person = Person.new(:code => '1234567890')
243
+ person.validates_cpf_or_cnpj(:code)
244
+ person.errors.should_not be_empty
245
+ end
246
+
247
+ it 'value is 12345678901' do
248
+ person = Person.new(:code => '12345678901')
249
+ person.validates_cpf_or_cnpj(:code)
250
+ person.errors.should_not be_empty
251
+ end
252
+
253
+ it 'value is ABC80033787883' do
254
+ person = Person.new(:code => 'ABC45678901')
255
+ person.validates_cpf_or_cnpj(:code)
256
+ person.errors.should_not be_empty
257
+ end
258
+
259
+ it 'value is 123.456.789-01' do
260
+ person = Person.new(:code => '123.456.789-01')
261
+ person.validates_cpf_or_cnpj(:code)
262
+ person.errors.should_not be_empty
263
+ end
264
+
265
+ it 'value is 800337.878-83' do
266
+ person = Person.new(:code => '800337.878-83')
267
+ person.validates_cpf_or_cnpj(:code)
268
+ person.errors.should_not be_empty
269
+ end
270
+
271
+ it 'value is 800337878-83' do
272
+ person = Person.new(:code => '800337878-83')
273
+ person.validates_cpf_or_cnpj(:code)
274
+ person.errors.should_not be_empty
275
+ end
276
+
277
+ it 'value is nil' do
278
+ person = Person.new(:code => nil)
279
+ person.validates_cpf_or_cnpj(:code)
280
+ person.errors.should_not be_empty
281
+ end
282
+
283
+ it 'value is empty' do
284
+ person = Person.new(:code => '')
285
+ person.validates_cpf_or_cnpj(:code)
286
+ person.errors.should_not be_empty
287
+ end
288
+
289
+ it 'value is 1234567890123' do
290
+ person = Person.new(:code => '1234567890123')
291
+ person.validates_cpf_or_cnpj(:code)
292
+ person.errors.should_not be_empty
293
+ end
294
+
295
+ it 'value is 12345678901234' do
296
+ person = Person.new(:code => '12345678901234')
297
+ person.validates_cpf_or_cnpj(:code)
298
+ person.errors.should_not be_empty
299
+ end
300
+
301
+ it 'value is 123456789012345' do
302
+ person = Person.new(:code => '123456789012345')
303
+ person.validates_cpf_or_cnpj(:code)
304
+ person.errors.should_not be_empty
305
+ end
306
+
307
+ it 'value is ABC05393625000184' do
308
+ person = Person.new(:code => 'ABC05393625000184')
309
+ person.validates_cpf_or_cnpj(:code)
310
+ person.errors.should_not be_empty
311
+ end
312
+
313
+ it 'value is 12.345.678/9012-34' do
314
+ person = Person.new(:code => '12.345.678/9012-34')
315
+ person.validates_cpf_or_cnpj(:code)
316
+ person.errors.should_not be_empty
317
+ end
318
+
319
+ it 'value is 05393.625/0001-84' do
320
+ person = Person.new(:code => '05393.625/0001-84')
321
+ person.validates_cpf_or_cnpj(:code)
322
+ person.errors.should_not be_empty
323
+ end
324
+
325
+ it 'value is 05393.6250001-84' do
326
+ person = Person.new(:code => '05393.6250001-84')
327
+ person.validates_cpf_or_cnpj(:code)
328
+ person.errors.should_not be_empty
329
+ end
330
+
331
+ it 'value is nil' do
332
+ person = Person.new(:code => nil)
333
+ person.validates_cpf_or_cnpj(:code)
334
+ person.errors.should_not be_empty
335
+ end
336
+
337
+ it 'value is empty' do
338
+ person = Person.new(:code => '')
339
+ person.validates_cpf_or_cnpj(:code)
340
+ person.errors.should_not be_empty
341
+ end
342
+ end
343
+
344
+ context 'should be valid when' do
345
+ it 'value is 80033787883' do
346
+ person = Person.new(:code => '80033787883')
347
+ person.validates_cpf_or_cnpj(:code)
348
+ person.errors.should be_empty
349
+ end
350
+
351
+ it 'value is 800.337.878-83' do
352
+ person = Person.new(:code => '800.337.878-83')
353
+ person.validates_cpf_or_cnpj(:code)
354
+ person.errors.should be_empty
355
+ end
356
+
357
+ it 'value is nil and :allow_nil or :allow_blank is true' do
358
+ person = Person.new(:code => nil)
359
+ person.validates_cpf_or_cnpj(:code, :allow_nil => true)
360
+ person.errors.should be_empty
361
+ person.validates_cpf_or_cnpj(:code, :allow_blank => true)
362
+ person.errors.should be_empty
363
+ end
364
+
365
+ it 'value is empty and :allow_blank is true' do
366
+ person = Person.new(:code => '')
367
+ person.validates_cpf_or_cnpj(:code, :allow_blank => true)
368
+ person.errors.should be_empty
369
+ person.validates_cpf_or_cnpj(:code, :allow_nil => true)
370
+ person.errors.should_not be_empty
371
+ end
372
+
373
+ it ':if option evaluates false' do
374
+ person = Person.new(:code => '12345678901')
375
+ person.validates_cpf_or_cnpj(:code, :if => false)
376
+ person.errors.should be_empty
377
+ end
378
+
379
+ it ':unless option evaluates true' do
380
+ person = Person.new(:code => '12345678901')
381
+ person.validates_cpf_or_cnpj(:code, :unless => true)
382
+ person.errors.should be_empty
383
+ end
384
+
385
+ it ':on option is :create and the model instance is not a new record' do
386
+ person = Person.new(:code => '12345678901')
387
+ person.stub!(:new_record?, false)
388
+ person.validates_cpf_or_cnpj(:code, :on => :create)
389
+ person.errors.should be_empty
390
+ end
391
+
392
+ it ':on option is :update and the model instance is a new record' do
393
+ person = Person.new(:code => '12345678901')
394
+ person.validates_cpf_or_cnpj(:code, :on => :update)
395
+ person.errors.should be_empty
396
+ end
397
+
398
+ it 'value is 05393625000184' do
399
+ person = Person.new(:code => '05393625000184')
400
+ person.validates_cpf_or_cnpj(:code)
401
+ person.errors.should be_empty
402
+ end
403
+
404
+ it 'value is 05.393.625/0001-84' do
405
+ person = Person.new(:code => '05.393.625/0001-84')
406
+ person.validates_cpf_or_cnpj(:code)
407
+ person.errors.should be_empty
408
+ end
409
+
410
+ it 'value is nil and :allow_nil or :allow_blank is true' do
411
+ person = Person.new(:code => nil)
412
+ person.validates_cpf_or_cnpj(:code, :allow_nil => true)
413
+ person.errors.should be_empty
414
+ person.validates_cpf_or_cnpj(:code, :allow_blank => true)
415
+ person.errors.should be_empty
416
+ end
417
+
418
+ it 'value is empty and :allow_blank is true' do
419
+ person = Person.new(:code => '')
420
+ person.validates_cpf_or_cnpj(:code, :allow_blank => true)
421
+ person.errors.should be_empty
422
+ person.validates_cpf_or_cnpj(:code, :allow_nil => true)
423
+ person.errors.should_not be_empty
424
+ end
425
+
426
+ it ':if option evaluates false' do
427
+ person = Person.new(:code => '12345678901234')
428
+ person.validates_cpf_or_cnpj(:code, :if => false)
429
+ person.errors.should be_empty
430
+ end
431
+
432
+ it ':unless option evaluates true' do
433
+ person = Person.new(:code => '12345678901234')
434
+ person.validates_cpf_or_cnpj(:code, :unless => true)
435
+ person.errors.should be_empty
436
+ end
437
+
438
+ it ':on option is :create and the model instance is not a new record' do
439
+ person = Person.new(:code => '12345678901')
440
+ person.stub!(:new_record?, false)
441
+ person.validates_cpf_or_cnpj(:code, :on => :create)
442
+ person.errors.should be_empty
443
+ end
444
+
445
+ it ':on option is :update and the model instance is a new record' do
446
+ person = Person.new(:code => '12345678901')
447
+ person.validates_cpf_or_cnpj(:code, :on => :update)
448
+ person.errors.should be_empty
449
+ end
450
+ end
451
+ end
452
+ end
@@ -0,0 +1,18 @@
1
+ require 'validates_cpf_cnpj'
2
+ require 'active_record'
3
+
4
+ ActiveRecord::Base.establish_connection(
5
+ :adapter => 'sqlite3',
6
+ :database => ':memory:'
7
+ )
8
+
9
+ ActiveRecord::Schema.define do
10
+ self.verbose = false
11
+
12
+ create_table :people do |t|
13
+ t.string :code
14
+ end
15
+ end
16
+
17
+ class Person < ActiveRecord::Base
18
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "validates_cpf_cnpj/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "validates_cpf_cnpj"
7
+ s.version = ValidatesCpfCnpj::VERSION
8
+ s.authors = ["Reginaldo Francisco"]
9
+ s.email = ["naldo_ds@yahoo.com.br"]
10
+ s.homepage = "http://github.com/rfs/validates_cpf_cnpj"
11
+ s.summary = %q{CPF/CNPJ ActiveModel validations}
12
+ s.description = %q{CPF and CNPJ validations for ActiveModel and Rails}
13
+
14
+ s.rubyforge_project = "validates_cpf_cnpj"
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) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_development_dependency "rake"
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "activerecord"
24
+
25
+ s.add_runtime_dependency "activemodel", ">= 3.0.0"
26
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: validates_cpf_cnpj
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Reginaldo Francisco
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &79122770 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *79122770
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &79122560 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *79122560
36
+ - !ruby/object:Gem::Dependency
37
+ name: activerecord
38
+ requirement: &79122350 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *79122350
47
+ - !ruby/object:Gem::Dependency
48
+ name: activemodel
49
+ requirement: &79122100 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *79122100
58
+ description: CPF and CNPJ validations for ActiveModel and Rails
59
+ email:
60
+ - naldo_ds@yahoo.com.br
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - .rspec
67
+ - Gemfile
68
+ - README.rdoc
69
+ - Rakefile
70
+ - lib/validates_cpf_cnpj.rb
71
+ - lib/validates_cpf_cnpj/cnpj.rb
72
+ - lib/validates_cpf_cnpj/cpf.rb
73
+ - lib/validates_cpf_cnpj/version.rb
74
+ - spec/lib/validates_cpf_cnpj_spec.rb
75
+ - spec/spec_helper.rb
76
+ - validates_cpf_cnpj.gemspec
77
+ homepage: http://github.com/rfs/validates_cpf_cnpj
78
+ licenses: []
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project: validates_cpf_cnpj
97
+ rubygems_version: 1.8.10
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: CPF/CNPJ ActiveModel validations
101
+ test_files: []