brcpfcnpj 3.0.4 → 3.0.5

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/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"