brid 0.2.0 → 0.2.1
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/README.md +9 -4
- data/brid.gemspec +1 -0
- data/lib/brid/ids/cred_card.rb +1 -1
- data/lib/brid/ids/generic_id.rb +12 -5
- data/lib/brid/ids/titulo_eleitor.rb +0 -2
- data/lib/brid/version.rb +1 -1
- data/spec/cpf_spec.rb +2 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -17,6 +17,12 @@ Or install it yourself as:
|
|
17
17
|
|
18
18
|
$ gem install brid
|
19
19
|
|
20
|
+
Or if you want use Rails3 validations on ActiveModel, add this to your application's Gemfile:
|
21
|
+
|
22
|
+
```
|
23
|
+
gem 'brid-rails'
|
24
|
+
```
|
25
|
+
|
20
26
|
## Components
|
21
27
|
|
22
28
|
* CPF object with validation (brazilian document)
|
@@ -43,9 +49,9 @@ CPF.new(13524687601).valid? # true
|
|
43
49
|
### Validating a CNPJ
|
44
50
|
|
45
51
|
``` ruby
|
46
|
-
CNPJ.new('18.781.203/0001-28').valid?
|
47
|
-
(Mod11.new('
|
48
|
-
'
|
52
|
+
CNPJ.new('18.781.203/0001-28').valid? # true
|
53
|
+
(Mod11.new('18.781.203/0001', :base => 2..9) * 2).to_s == '18781203000128' # true
|
54
|
+
'18.781.203/0001'.mod11(2, :base => 2..9) == '18781203000128' # true
|
49
55
|
|
50
56
|
```
|
51
57
|
|
@@ -69,7 +75,6 @@ CredCard.new('411119876333502').valid? # true
|
|
69
75
|
|
70
76
|
## Next Steps
|
71
77
|
|
72
|
-
* Develop a rails plugin built on top of ActiveRecord
|
73
78
|
* Develop a smart generator for fixture on tests (I thought of doing built on top of ffaker, like my othre gem: [ffaker-cpfcnpj](https://github.com/halan/ffaker-cpfcnpj) )
|
74
79
|
|
75
80
|
## Contributing
|
data/brid.gemspec
CHANGED
data/lib/brid/ids/cred_card.rb
CHANGED
data/lib/brid/ids/generic_id.rb
CHANGED
@@ -2,12 +2,11 @@ class GenericID
|
|
2
2
|
def number_length; 0; end;
|
3
3
|
def check_digits_length; 1; end;
|
4
4
|
|
5
|
+
attr_reader :number
|
5
6
|
def initialize number
|
6
7
|
@number = clear_number(number)
|
7
|
-
|
8
|
-
if number_length > 0
|
9
|
-
raise ArgumentError.new "invalid number" if @number.length != number_length
|
10
|
-
end
|
8
|
+
|
9
|
+
@number = @number.rjust number_length, '0' if number_length > 0 and @number.length != number_length
|
11
10
|
end
|
12
11
|
|
13
12
|
def check_digits
|
@@ -23,6 +22,8 @@ class GenericID
|
|
23
22
|
end
|
24
23
|
|
25
24
|
def valid?
|
25
|
+
return @valid if self.frozen?
|
26
|
+
|
26
27
|
@valid ||= begin
|
27
28
|
valid_number == @number and not invalid_sequential?
|
28
29
|
rescue TypeError
|
@@ -30,6 +31,12 @@ class GenericID
|
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
34
|
+
def freeze
|
35
|
+
check_digits
|
36
|
+
valid?
|
37
|
+
super
|
38
|
+
end
|
39
|
+
|
33
40
|
def invalid_sequential?
|
34
41
|
@invalid_sequential ||=begin
|
35
42
|
sequential.chars.to_a.uniq.count.eql? 1
|
@@ -46,7 +53,7 @@ class GenericID
|
|
46
53
|
end
|
47
54
|
|
48
55
|
def clear_number number
|
49
|
-
number.to_s.
|
56
|
+
number.to_s.gsub(/\D/, '')
|
50
57
|
end
|
51
58
|
end
|
52
59
|
|
data/lib/brid/version.rb
CHANGED
data/spec/cpf_spec.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Halan Pinheiro
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-07-
|
18
|
+
date: 2012-07-25 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Brazilian identifications like CPF, CNPJ, Titulo de Eleitor
|