validates_cpf_cnpj 0.1.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 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: []