br-cnpj 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +11 -0
- data/lib/br/cnpj.rb +50 -7
- data/spec/br-cnpj_spec.rb +108 -16
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -25,6 +25,17 @@ Lib implementada em C (gera uma lib compilada nativamente) que calcula e valida
|
|
25
25
|
BR::CNPJ.new(raiz, filial).to_s
|
26
26
|
=> '00000000000191'
|
27
27
|
|
28
|
+
BR::CNPJ.new(191).valid?
|
29
|
+
=> true
|
30
|
+
|
31
|
+
BR::CNPJ.new(1234567891011).valid?
|
32
|
+
=> false
|
33
|
+
|
34
|
+
BR::CNPJ.format(191)
|
35
|
+
=> '00.000.000/0001-91'
|
36
|
+
|
37
|
+
BR::CNPJ.unformat('00.000.000/0001-91')
|
38
|
+
=> '00000000000191'
|
28
39
|
|
29
40
|
|
30
41
|
== Copyright
|
data/lib/br/cnpj.rb
CHANGED
@@ -3,23 +3,66 @@ require File.join(File.dirname(__FILE__), '../CNPJ')
|
|
3
3
|
module BR
|
4
4
|
class CNPJ
|
5
5
|
class << self
|
6
|
+
|
6
7
|
alias_method :orig_valid?, :valid?
|
8
|
+
|
9
|
+
# Formata o Cnpj desformatado
|
10
|
+
#
|
11
|
+
# Cnpj.formatar(191) # => '00.000.000/0001-91'
|
12
|
+
# Cnpj.formatar(30553786000135) # => "30.553.786/0001-35"
|
13
|
+
#
|
14
|
+
def format(cnpj)
|
15
|
+
cnpj = cnpj.to_s.rjust(14, "0")
|
16
|
+
"%s.%s.%s/%s-%s" % [cnpj[0,2], cnpj[2,3], cnpj[5,3], cnpj[8,4], cnpj[12,2]]
|
17
|
+
end
|
18
|
+
alias_method :formatar, :format
|
19
|
+
|
20
|
+
# Desformata o Cnpj formatado
|
21
|
+
#
|
22
|
+
# Cnpj.desformatar("02.716.485/0001-40") # => "02716485000140"
|
23
|
+
# Cnpj.unformat("00.086.001/0001-04") # => "00086001000104"
|
24
|
+
#
|
25
|
+
def unformat(cnpj)
|
26
|
+
cnpj.gsub(/\D/, '')
|
27
|
+
end
|
28
|
+
alias_method :desformatar, :unformat
|
29
|
+
|
30
|
+
# Retorna true se o Cnpj for válido
|
31
|
+
# Retorna falso se o Cnpj for inválido
|
32
|
+
#
|
33
|
+
# CNPJ.valid?(191) # => true
|
34
|
+
# CNPJ.valid?(123456789101) # => false
|
35
|
+
#
|
36
|
+
def valid?(cnpj)
|
37
|
+
if cnpj.is_a? String
|
38
|
+
orig_valid?(cnpj.to_i)
|
39
|
+
else
|
40
|
+
orig_valid?(cnpj)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
7
44
|
end
|
45
|
+
attr_reader :filial, :valid, :raiz, :verif
|
8
46
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
47
|
+
# Return if the instance CNPJ is valid?
|
48
|
+
#
|
49
|
+
# Cnpj.new(191).valid? # => true
|
50
|
+
#
|
51
|
+
def valid?
|
52
|
+
valid
|
15
53
|
end
|
16
|
-
|
54
|
+
|
17
55
|
def to_i
|
18
56
|
@raiz * 1_000_000 + @filial * 100 + @verif
|
19
57
|
end
|
20
58
|
|
59
|
+
# Return the CNPJ with 14 characters
|
60
|
+
#
|
61
|
+
# CNPJ.new(191).to_s # => '00000000000191'
|
62
|
+
#
|
21
63
|
def to_s
|
22
64
|
"%014d" % to_i
|
23
65
|
end
|
66
|
+
|
24
67
|
end
|
25
68
|
end
|
data/spec/br-cnpj_spec.rb
CHANGED
@@ -1,37 +1,129 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
module BR
|
4
|
+
|
5
|
+
describe CNPJ do
|
6
|
+
|
7
|
+
context 'when validate instances' do
|
8
|
+
|
9
|
+
it 'should return true for the cnpj valid' do
|
10
|
+
VALID_CNPJS_INTEGER.each do |valid_cnpj|
|
11
|
+
CNPJ.new(valid_cnpj).valid?.should be_true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should return false the cnpj invalid' do
|
16
|
+
INVALID_CNPJS_INTEGER.each do |invalid_cnpj|
|
17
|
+
CNPJ.new(invalid_cnpj).valid?.should be_false
|
18
|
+
end
|
19
|
+
end
|
4
20
|
|
5
|
-
|
21
|
+
end
|
22
|
+
|
23
|
+
context "when Fixnum" do
|
6
24
|
|
7
|
-
|
8
|
-
|
9
|
-
|
25
|
+
it "should return true for valid cnpjs" do
|
26
|
+
VALID_CNPJS_INTEGER.each do |valid_cnpj|
|
27
|
+
CNPJ.valid?(valid_cnpj).should be_true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return false for invalid cnpjs" do
|
32
|
+
INVALID_CNPJS_INTEGER.each do |invalid_cnpj|
|
33
|
+
CNPJ.valid?(invalid_cnpj).should be_false
|
34
|
+
end
|
10
35
|
end
|
36
|
+
|
11
37
|
end
|
38
|
+
|
39
|
+
context "when String" do
|
12
40
|
|
13
|
-
|
14
|
-
|
15
|
-
|
41
|
+
it "should return true for valid cnpjs" do
|
42
|
+
VALID_CNPJS_STRING.each do |valid_cnpj|
|
43
|
+
CNPJ.valid?(valid_cnpj).should be_true
|
44
|
+
end
|
16
45
|
end
|
46
|
+
|
47
|
+
it "should return false for invalid cnpjs" do
|
48
|
+
INVALID_CNPJS_STRING.each do |invalid_cnpj|
|
49
|
+
CNPJ.valid?(invalid_cnpj).should be_false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
17
53
|
end
|
54
|
+
|
55
|
+
context 'when format cnpj' do
|
18
56
|
|
19
|
-
|
57
|
+
it 'should format the cnpj put zero in the left' do
|
58
|
+
CNPJ.format(191).should eql('00.000.000/0001-91')
|
59
|
+
end
|
20
60
|
|
21
|
-
|
61
|
+
it 'should format the cnpj put zero in the left (cnpj filial)' do
|
62
|
+
CNPJ.format(272).should eql('00.000.000/0002-72')
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should format the cnpj put period and stuff" do
|
66
|
+
CNPJ.formatar(30553786000135).should eql("30.553.786/0001-35")
|
67
|
+
end
|
22
68
|
|
23
|
-
|
24
|
-
|
25
|
-
BR::CNPJ.valid?(valid_cnpj).should be_true
|
69
|
+
it "should format the cnpj" do
|
70
|
+
CNPJ.formatar(14712911000156).should eql("14.712.911/0001-56")
|
26
71
|
end
|
72
|
+
|
27
73
|
end
|
28
74
|
|
29
|
-
|
30
|
-
|
31
|
-
|
75
|
+
context 'when unformat cnpj' do
|
76
|
+
|
77
|
+
it "should return only numbers in String" do
|
78
|
+
CNPJ.unformat("02.716.485/0001-40").should == "02716485000140"
|
32
79
|
end
|
80
|
+
|
81
|
+
it "should remove the chars '.', '/' and '-'" do
|
82
|
+
CNPJ.unformat("71.153.638/0001-00").should == "71153638000100"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should remove the chars with '-'" do
|
86
|
+
CNPJ.desformatar("47.580.835/0001-21").should == "47580835000121"
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should remove the chars with '/'" do
|
90
|
+
CNPJ.desformatar("98.819.832/0001-32").should == "98819832000132"
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should retorn an String" do
|
94
|
+
CNPJ.desformatar("00.022.559/0001-13").should be_kind_of(String)
|
95
|
+
end
|
96
|
+
|
33
97
|
end
|
98
|
+
|
99
|
+
context 'when to_s' do
|
100
|
+
|
101
|
+
it "should return a String" do
|
102
|
+
CNPJ.new(191).to_s.should be_kind_of(String)
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should return a String with 14 chars' do
|
106
|
+
CNPJ.new(191).to_s.should have(14).items
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should return the CNPJ in string' do
|
110
|
+
CNPJ.new(272).to_s.should == '00000000000272'
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should return the CNPJ in String' do
|
114
|
+
CNPJ.new(191).to_s.should == '00000000000191'
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
34
118
|
|
119
|
+
context 'when to_i' do
|
120
|
+
|
121
|
+
it 'should return a Fixnum' do
|
122
|
+
CNPJ.new('191').to_i.should be_kind_of(Fixnum)
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
35
127
|
end
|
36
128
|
|
37
129
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 6
|
9
|
+
version: 0.1.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Bruno Coimbra
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-19 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|