brcpfcnpj 3.0.4 → 3.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  # encoding: UTF-8
2
2
  require "rubygems"
3
3
  require "rake"
4
- require "rake/rdoctask"
4
+ require "rdoc/task"
5
5
  require "rake/packagetask"
6
6
  require "rake/gempackagetask"
7
7
 
@@ -10,7 +10,7 @@
10
10
  # Como usar a classe Cnpj no seu ActiveRecord:
11
11
  #
12
12
  # Suponha que temos um model Empresa, com um atributo 'cnpj'
13
- # que voce quer usar como um numero de documento para cnpj. Basta usar o
13
+ # que voce quer usar como um numero de documento para cnpj. Basta usar o
14
14
  # metodo <tt>usar_como_cnpj</tt>, assim:
15
15
  #
16
16
  # class Empresa < ActiveRecord::Base
@@ -24,10 +24,10 @@
24
24
  # puts e.cnpj # ==> 69.103.604/0001-60
25
25
  # e.cnpj.valido? # ==> true
26
26
  # e.cnpj_valido? # ==> true
27
- #
27
+ #
28
28
  # e = Empresa.new(:cnpj => "69.103.604/0001-60")
29
29
  # puts e.cnpj # ==> 69.103.604/0001-60
30
- #
30
+ #
31
31
  # e = Empresa.new
32
32
  # e.cnpj = Cnpj.new("691036040001-60")
33
33
  # puts e.cnpj # ==> 69.103.604/0001-60
@@ -37,10 +37,10 @@
37
37
  # puts e.valid? # ==> false
38
38
  # e.save # ==> false
39
39
  # e.errors.on(:cnpj) # ==> 'número inválido'
40
- #
40
+ #
41
41
  # c = Cnpj.new("69103604000160")
42
42
  # e.cnpj = "69.103.604/0001-60"
43
- # c == e.cnpj # ==> true
43
+ # c == e.cnpj # ==> true
44
44
  class Cnpj
45
45
  include CpfCnpj
46
46
  end
data/lib/brcpfcnpj/cpf.rb CHANGED
@@ -11,17 +11,17 @@
11
11
  # Como usar a classe Cpf no seu ActiveRecord:
12
12
  #
13
13
  # Suponha que temos um model Pessoa, com um atributo 'cpf'
14
- # que voce quer usar como um numero de documento para cpf. Basta usar o
14
+ # que voce quer usar como um numero de documento para cpf. Basta usar o
15
15
  # metodo <tt>usar_como_cpf</tt>, assim:
16
16
  #
17
17
  # class Pessoa < ActiveRecord::Base
18
18
  # usar_como_cpf :cpf
19
19
  # end
20
- #
20
+ #
21
21
  # O atributo que sera usado como cpf pode ter qualquer nome e nao apenas 'cpf'
22
22
  #
23
23
  # Agora voce pode usar o atributo para cpf da seguinte forma:
24
- #
24
+ #
25
25
  # p = Pessoa.new
26
26
  # p.cpf = "11144477735"
27
27
  # puts p.cpf # ==> 111.444.777-35
@@ -44,8 +44,8 @@
44
44
  # c = Cpf.new("11144477735")
45
45
  # p.cpf = "111.444.777-35"
46
46
  # c == p.cpf # ==> true
47
- #
48
- class Cpf
47
+ #
48
+ class Cpf
49
49
  include CpfCnpj
50
50
  end
51
51
 
@@ -1,90 +1,90 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module CpfCnpj
3
3
  attr_reader :numero
4
-
4
+
5
5
  def initialize(numero)
6
- @numero = numero
6
+ @numero = numero
7
7
  @match = self.instance_of?(Cpf) ? @numero =~ CPF_REGEX : @numero =~ CNPJ_REGEX
8
8
  @numero_puro = $1
9
9
  @para_verificacao = $2
10
10
  @numero = (@match ? format_number! : nil)
11
11
  end
12
-
12
+
13
13
  def to_s
14
14
  @numero || ""
15
15
  end
16
-
16
+
17
17
  def ==(outro_doc)
18
18
  self.numero == outro_doc.numero
19
19
  end
20
-
21
- # Verifica se o numero possui o formato correto e se
20
+
21
+ # Verifica se o numero possui o formato correto e se
22
22
  # constitui um numero de documento valido, dependendo do seu
23
23
  # tipo (Cpf ou Cnpj).
24
- def valido?
25
- return false unless @match
24
+ def valido?
25
+ return false unless @match
26
26
  verifica_numero
27
- end
28
-
27
+ end
28
+
29
29
  private
30
30
  DIVISOR = 11
31
-
31
+
32
32
  CPF_LENGTH = 11
33
33
  CPF_REGEX = /^(\d{3}\.?\d{3}\.?\d{3})-?(\d{2})$/
34
34
  CPF_ALGS_1 = [10, 9, 8, 7, 6, 5, 4, 3, 2]
35
- CPF_ALGS_2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]
36
-
37
- CNPJ_LENGTH = 14
35
+ CPF_ALGS_2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]
36
+
37
+ CNPJ_LENGTH = 14
38
38
  CNPJ_REGEX = /^(\d{2}\.?\d{3}\.?\d{3}\/?\d{4})-?(\d{2})$/ # <= 11.222.333/0001-XX
39
39
  CNPJ_ALGS_1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
40
- CNPJ_ALGS_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
41
-
42
-
43
- def verifica_numero
40
+ CNPJ_ALGS_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
41
+
42
+
43
+ def verifica_numero
44
44
  limpo = @numero.gsub(/[\.\/-]/, "")
45
45
  if self.instance_of? Cpf
46
46
  return false if limpo.length != 11
47
47
  elsif self.instance_of? Cnpj
48
48
  return false if limpo.length != 14
49
- end
49
+ end
50
50
  return false if limpo.scan(/\d/).uniq.length == 1
51
51
  primeiro_verificador = primeiro_digito_verificador
52
52
  segundo_verificador = segundo_digito_verificador(primeiro_verificador)
53
53
  verif = primeiro_verificador + segundo_verificador
54
54
  verif == @para_verificacao
55
55
  end
56
-
56
+
57
57
  def multiplica_e_soma(algs, numero_str)
58
58
  multiplicados = []
59
- numero_str.scan(/\d{1}/).each_with_index { |e, i| multiplicados[i] = e.to_i * algs[i] }
60
- multiplicados.inject { |s,e| s + e }
59
+ numero_str.scan(/\d{1}/).each_with_index { |e, i| multiplicados[i] = e.to_i * algs[i] }
60
+ multiplicados.inject { |s,e| s + e }
61
61
  end
62
-
62
+
63
63
  def digito_verificador(resto)
64
64
  resto < 2 ? 0 : DIVISOR - resto
65
65
  end
66
-
66
+
67
67
  def primeiro_digito_verificador
68
- array = self.instance_of?(Cpf) ? CPF_ALGS_1 : CNPJ_ALGS_1
69
- soma = multiplica_e_soma(array, @numero_puro)
68
+ array = self.instance_of?(Cpf) ? CPF_ALGS_1 : CNPJ_ALGS_1
69
+ soma = multiplica_e_soma(array, @numero_puro)
70
70
  digito_verificador(soma%DIVISOR).to_s
71
71
  end
72
72
 
73
- def segundo_digito_verificador(primeiro_verificador)
74
- array = self.instance_of?(Cpf) ? CPF_ALGS_2 : CNPJ_ALGS_2
75
- soma = multiplica_e_soma(array, @numero_puro + primeiro_verificador)
73
+ def segundo_digito_verificador(primeiro_verificador)
74
+ array = self.instance_of?(Cpf) ? CPF_ALGS_2 : CNPJ_ALGS_2
75
+ soma = multiplica_e_soma(array, @numero_puro + primeiro_verificador)
76
76
  digito_verificador(soma%DIVISOR).to_s
77
77
  end
78
-
78
+
79
79
  def format_number!
80
80
  if self.instance_of? Cpf
81
81
  @numero =~ /(\d{3})\.?(\d{3})\.?(\d{3})-?(\d{2})/
82
82
  @numero = "#{$1}.#{$2}.#{$3}-#{$4}"
83
83
  else
84
- @numero =~ /(\d{2})\.?(\d{3})\.?(\d{3})\/?(\d{4})-?(\d{2})/
85
- @numero = "#{$1}.#{$2}.#{$3}/#{$4}-#{$5}"
86
- end
87
- end
88
-
84
+ @numero =~ /(\d{2})\.?(\d{3})\.?(\d{3})\/?(\d{4})-?(\d{2})/
85
+ @numero = "#{$1}.#{$2}.#{$3}/#{$4}-#{$5}"
86
+ end
87
+ end
88
+
89
89
  end
90
90
 
@@ -7,7 +7,7 @@ module CpfCnpjActiveRecord #:nodoc:
7
7
  def usar_como_cpf(*args) #:nodoc:
8
8
  init(args, 'Cpf')
9
9
  end
10
-
10
+
11
11
  def usar_como_cnpj(*args) #:nodoc:
12
12
  init(args, 'Cnpj')
13
13
  end
@@ -18,16 +18,16 @@ module CpfCnpjActiveRecord #:nodoc:
18
18
  add_composed_class(name, klass)
19
19
  module_eval create_code(name.to_s, klass)
20
20
  end
21
- end
21
+ end
22
22
  end
23
23
 
24
24
  def add_composed_class(name, klass)
25
25
  options = {:class_name => klass, :mapping => [name.to_s, "numero"], :allow_nil => true}
26
26
  constructor = Proc.new { |numero| eval(klass).new(numero) }
27
27
  converter = Proc.new { |value| eval(klass).new(value) }
28
- begin
28
+ begin
29
29
  composed_of name, options.merge( { :constructor => constructor, :converter => converter } )
30
- rescue Exception
30
+ rescue Exception
31
31
  composed_of name, options { eval(klass).new(name[:numero]) }
32
32
  end
33
33
  end
@@ -42,15 +42,15 @@ module CpfCnpjActiveRecord #:nodoc:
42
42
  end
43
43
  end
44
44
  def #{name}=(value)
45
- if value.blank?
45
+ if value.blank?
46
46
  write_attribute('#{name}', nil)
47
- elsif value.kind_of?(#{eval(klass)})
47
+ elsif value.kind_of?(#{eval(klass)})
48
48
  write_attribute('#{name}', value.numero)
49
49
  else
50
- begin
50
+ begin
51
51
  c = #{eval(klass)}.new(value)
52
- c.valido? ? write_attribute('#{name}', c.numero) : write_attribute('#{name}', value)
53
- rescue
52
+ c.valido? ? write_attribute('#{name}', c.numero) : write_attribute('#{name}', value)
53
+ rescue
54
54
  @#{name} = value
55
55
  end
56
56
  end
@@ -2,7 +2,7 @@ module BrCpfCnpj
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
4
  MINOR = 0
5
- TINY = 4
5
+ TINY = 5
6
6
 
7
7
  STRING = "#{MAJOR}.#{MINOR}.#{TINY}"
8
8
  end
metadata CHANGED
@@ -1,8 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brcpfcnpj
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 3.0.4
4
+ prerelease: false
5
+ segments:
6
+ - 3
7
+ - 0
8
+ - 5
9
+ version: 3.0.5
6
10
  platform: ruby
7
11
  authors:
8
12
  - "Marcos Tapaj\xC3\xB3s"
@@ -16,52 +20,66 @@ autorequire:
16
20
  bindir: bin
17
21
  cert_chain: []
18
22
 
19
- date: 2011-03-01 00:00:00 -03:00
23
+ date: 2012-01-02 00:00:00 -02:00
20
24
  default_executable:
21
25
  dependencies:
22
26
  - !ruby/object:Gem::Dependency
23
27
  name: actionpack
24
- prerelease: false
25
28
  requirement: &id001 !ruby/object:Gem::Requirement
26
29
  none: false
27
30
  requirements:
28
31
  - - ">="
29
32
  - !ruby/object:Gem::Version
33
+ segments:
34
+ - 3
35
+ - 0
36
+ - 0
30
37
  version: 3.0.0
31
38
  type: :runtime
39
+ prerelease: false
32
40
  version_requirements: *id001
33
41
  - !ruby/object:Gem::Dependency
34
42
  name: activesupport
35
- prerelease: false
36
43
  requirement: &id002 !ruby/object:Gem::Requirement
37
44
  none: false
38
45
  requirements:
39
46
  - - ">="
40
47
  - !ruby/object:Gem::Version
48
+ segments:
49
+ - 3
50
+ - 0
51
+ - 0
41
52
  version: 3.0.0
42
53
  type: :runtime
54
+ prerelease: false
43
55
  version_requirements: *id002
44
56
  - !ruby/object:Gem::Dependency
45
57
  name: rake
46
- prerelease: false
47
58
  requirement: &id003 !ruby/object:Gem::Requirement
48
59
  none: false
49
60
  requirements:
50
61
  - - ">="
51
62
  - !ruby/object:Gem::Version
63
+ segments:
64
+ - 0
52
65
  version: "0"
53
66
  type: :development
67
+ prerelease: false
54
68
  version_requirements: *id003
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
- prerelease: false
58
71
  requirement: &id004 !ruby/object:Gem::Requirement
59
72
  none: false
60
73
  requirements:
61
74
  - - ">="
62
75
  - !ruby/object:Gem::Version
76
+ segments:
77
+ - 2
78
+ - 0
79
+ - 0
63
80
  version: 2.0.0
64
81
  type: :development
82
+ prerelease: false
65
83
  version_requirements: *id004
66
84
  description: "brcpfcnpj \xC3\xA9 uma das gems que compoem o Brazilian Rails"
67
85
  email:
@@ -103,17 +121,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
121
  requirements:
104
122
  - - ">="
105
123
  - !ruby/object:Gem::Version
124
+ hash: 3608075777574979284
125
+ segments:
126
+ - 0
106
127
  version: "0"
107
128
  required_rubygems_version: !ruby/object:Gem::Requirement
108
129
  none: false
109
130
  requirements:
110
131
  - - ">="
111
132
  - !ruby/object:Gem::Version
133
+ hash: 3608075777574979284
134
+ segments:
135
+ - 0
112
136
  version: "0"
113
137
  requirements:
114
138
  - none
115
139
  rubyforge_project: brcpfcnpj
116
- rubygems_version: 1.5.2
140
+ rubygems_version: 1.3.7
117
141
  signing_key:
118
142
  specification_version: 3
119
143
  summary: "brcpfcnpj \xC3\xA9 uma das gems que compoem o Brazilian Rails"