br-cnpj 0.1.6 → 1.0.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/README.rdoc CHANGED
@@ -1,12 +1,13 @@
1
1
  = br-cnpj
2
2
 
3
- Lib implementada em C (gera uma lib compilada nativamente) que calcula e valida CNPJs.
3
+ Ruby native extension that calculates and validades CNPJ (Cadastro Nacional de
4
+ Pessoas Jur�dicas)
4
5
 
5
- == Instalação
6
+ == Install
6
7
 
7
8
  sudo gem install br-cnpj
8
9
 
9
- == Exemplos
10
+ == Examples
10
11
 
11
12
  require 'rubygems'
12
13
  require 'br/cnpj'
@@ -20,9 +21,9 @@ Lib implementada em C (gera uma lib compilada nativamente) que calcula e valida
20
21
  BR::CNPJ.valid? 192
21
22
  => false
22
23
 
23
- raiz = 0
24
+ radix = 0
24
25
  filial = 1
25
- BR::CNPJ.new(raiz, filial).to_s
26
+ BR::CNPJ.new(radix, filial).to_s
26
27
  => '00000000000191'
27
28
 
28
29
  BR::CNPJ.new(191).valid?
data/ext/CNPJ/cnpj.c CHANGED
@@ -1,72 +1,72 @@
1
1
  #include <stdlib.h>
2
2
  #include "cnpj.h"
3
3
 
4
- #define DIGITO1 0
5
- #define DIGITO2 1
4
+ #define DIGIT1 0
5
+ #define DIGIT2 1
6
6
 
7
- long long calcula_digito_cnpj(int raiz, int filial){
8
- return (long long)raiz*1000000 + filial*100 + calcula_digito(raiz, filial);
7
+ long long calculate_cnpj_digit(int radix, int filial){
8
+ return (long long)radix*1000000 + filial*100 + calculate_digit(radix, filial);
9
9
  }
10
10
 
11
- int calcula_digito(int raiz, int filial){
12
- int digito1=0, digito2=0, i;
11
+ int calculate_digit(int radix, int filial){
12
+ int digit1=0, digit2=0, i;
13
13
  int vet[14];
14
- int pesos[][13] = {{5,4,3,2,9,8,7,6,5,4,3,2,0},
14
+ int weights[][13] = {{5,4,3,2,9,8,7,6,5,4,3,2,0},
15
15
  {6,5,4,3,2,9,8,7,6,5,4,3,2}};
16
16
  long long cnpj;
17
- div_t divisao;
17
+ div_t division;
18
18
 
19
- cnpj = (long long)raiz*1000000 + filial*100;
19
+ cnpj = (long long)radix*1000000 + filial*100;
20
20
  for (i=0;i<14;i++){
21
- lldiv_t divisao;
21
+ lldiv_t division;
22
22
 
23
- divisao = lldiv(cnpj,10);
24
- vet[13-i] = (int) divisao.rem;
25
- cnpj = divisao.quot;
23
+ division = lldiv(cnpj,10);
24
+ vet[13-i] = (int) division.rem;
25
+ cnpj = division.quot;
26
26
  }
27
27
  for(i=0;i<12;i++)
28
- digito1 += vet[i] * pesos[DIGITO1][i];
29
- divisao = div(digito1,11);
30
- digito1 = divisao.rem<2 ? 0 : 11-divisao.rem;
31
- vet[12]=digito1;
28
+ digit1 += vet[i] * weights[DIGIT1][i];
29
+ division = div(digit1,11);
30
+ digit1 = division.rem<2 ? 0 : 11-division.rem;
31
+ vet[12]=digit1;
32
32
  for(i=0;i<13;i++)
33
- digito2 += vet[i] * pesos[DIGITO2][i];
34
- divisao = div(digito2,11);
35
- digito2 = divisao.rem<2 ? 0 : 11- divisao.rem;
33
+ digit2 += vet[i] * weights[DIGIT2][i];
34
+ division = div(digit2,11);
35
+ digit2 = division.rem<2 ? 0 : 11- division.rem;
36
36
 
37
- return digito1*10 + digito2;
37
+ return digit1*10 + digit2;
38
38
  }
39
39
 
40
- int e_cnpj(long long cnpj_l){
41
- int raiz, filial;
42
- lldiv_t divisao;
40
+ int is_cnpj(long long cnpj_l){
41
+ int radix, filial;
42
+ lldiv_t division;
43
43
 
44
- divisao = lldiv(cnpj_l,1000000);
45
- raiz = divisao.quot;
46
- divisao = lldiv(divisao.rem,100);
47
- filial=divisao.quot;
48
- return cnpj_l == calcula_digito_cnpj(raiz, filial);
44
+ division = lldiv(cnpj_l,1000000);
45
+ radix = division.quot;
46
+ division = lldiv(division.rem,100);
47
+ filial=division.quot;
48
+ return cnpj_l == calculate_cnpj_digit(radix, filial);
49
49
  }
50
50
 
51
- int e_cgc(long long cgc_l){
52
- if(e_cnpj(cgc_l)){
53
- int pesos[]={2,1,2,1,2,1,2,1};
54
- int acumulador=0, raiz=0, i=0;
55
- lldiv_t divisao;
51
+ int is_cgc(long long cgc_l){
52
+ if(is_cnpj(cgc_l)){
53
+ int weights[]={2,1,2,1,2,1,2,1};
54
+ int sum=0, radix=0, i=0;
55
+ lldiv_t division;
56
56
 
57
- divisao = lldiv(cgc_l, 1000000);
58
- raiz = (int)divisao.quot;
57
+ division = lldiv(cgc_l, 1000000);
58
+ radix = (int)division.quot;
59
59
  for (i=0;i<8;i++){
60
- int produto=0;
60
+ int product=0;
61
61
 
62
- divisao = lldiv(raiz,10);
63
- produto = divisao.rem*pesos[7-i];
64
- acumulador += (produto>9) ? produto-9 : produto;
65
- raiz = divisao.quot;
62
+ division = lldiv(radix,10);
63
+ product = division.rem*weights[7-i];
64
+ sum += (product>9) ? product-9 : product;
65
+ radix = division.quot;
66
66
  }
67
67
 
68
- divisao=lldiv(acumulador, 10);
69
- return !divisao.rem;
68
+ division=lldiv(sum, 10);
69
+ return !division.rem;
70
70
  }
71
71
  return 0;
72
72
  }
data/ext/CNPJ/cnpj.h CHANGED
@@ -5,10 +5,10 @@
5
5
  extern "C" {
6
6
  #endif
7
7
 
8
- long long calcula_digito_cnpj(int raiz, int filial);
9
- int calcula_digito(int raiz, int filial);
10
- int e_cnpj(long long cnpj_l);
11
- int e_cgc(long long cgc_l);
8
+ long long calculate_cnpj_digit(int radix, int filial);
9
+ int calculate_digit(int radix, int filial);
10
+ int is_cnpj(long long cnpj_l);
11
+ int is_cgc(long long cgc_l);
12
12
 
13
13
  #ifdef __cplusplus
14
14
  }
data/ext/CNPJ/ruby_cnpj.c CHANGED
@@ -3,19 +3,19 @@
3
3
 
4
4
  static VALUE t_init_cnpj(int argc, VALUE *argv, VALUE self)
5
5
  {
6
- int raiz = 0;
6
+ int radix = 0;
7
7
  int filial = 0;
8
8
  int verif = 0;
9
9
  VALUE valid = Qnil;
10
10
 
11
11
  if (argc == 2) {
12
- raiz = FIX2INT(argv[0]);
13
- if( raiz >= 100000000 || raiz < 0 )
14
- rb_raise(rb_eArgError, "raiz should be greater than -1 or lesser than 10_000_000");
12
+ radix = FIX2INT(argv[0]);
13
+ if( radix >= 100000000 || radix < 0 )
14
+ rb_raise(rb_eArgError, "radix should be greater than -1 or lesser than 10_000_000");
15
15
  filial = NUM2INT(argv[1]);
16
16
  if( filial >= 10000 || filial < 1)
17
17
  rb_raise(rb_eArgError, "filial should be greater than 0 or lesser than 10_000");
18
- verif = calcula_digito(raiz,filial);
18
+ verif = calculate_digit(radix,filial);
19
19
  valid = Qtrue;
20
20
  }
21
21
  else if (argc == 1) {
@@ -33,32 +33,32 @@ static VALUE t_init_cnpj(int argc, VALUE *argv, VALUE self)
33
33
  verif = (int)v.rem;
34
34
  v = lldiv(v.quot, (long long)10000);
35
35
  filial = (int)v.rem;
36
- raiz = (int)v.quot;
37
- valid = verif == calcula_digito(raiz,filial) ? Qtrue : Qfalse;
36
+ radix = (int)v.quot;
37
+ valid = (verif == calculate_digit(radix,filial)) ? Qtrue : Qfalse;
38
38
  }
39
39
 
40
- rb_iv_set(self, "@raiz", INT2FIX(raiz));
40
+ rb_iv_set(self, "@radix", INT2FIX(radix));
41
41
  rb_iv_set(self, "@filial", INT2FIX(filial));
42
- rb_iv_set(self, "@verif", INT2FIX(verif));
42
+ rb_iv_set(self, "@digit", INT2FIX(verif));
43
43
  rb_iv_set(self, "@valid", valid);
44
44
 
45
45
  return self;
46
46
  }
47
47
 
48
- static VALUE is_cgc(VALUE self){
49
- long long raiz=0;
50
- int filial = 0, dv = 0;
51
- raiz = NUM2INT(rb_iv_get(self, "@raiz"));
48
+ static VALUE rb_is_cgc(VALUE self){
49
+ long long radix=0;
50
+ int filial = 0, verify_digit = 0;
51
+ radix = NUM2INT(rb_iv_get(self, "@radix"));
52
52
  filial = NUM2INT(rb_iv_get(self, "@filial"));
53
- dv = NUM2INT(rb_iv_get(self, "@verif"));
54
- return e_cgc((long long)raiz * 1000000 + filial * 100 + dv) ? Qtrue : Qfalse;
53
+ verify_digit = NUM2INT(rb_iv_get(self, "@digit"));
54
+ return is_cgc((long long)radix * 1000000 + filial * 100 + verify_digit) ? Qtrue : Qfalse;
55
55
  }
56
56
 
57
57
  static VALUE valid_cnpj(VALUE self, VALUE ruby_cnpj){
58
58
  long long cnpj=0;
59
59
  cnpj = (long long)NUM2LL(ruby_cnpj);
60
60
  if(cnpj == 0) return Qfalse;
61
- return e_cnpj(cnpj) ? Qtrue : Qfalse;
61
+ return is_cnpj(cnpj) ? Qtrue : Qfalse;
62
62
  }
63
63
 
64
64
  VALUE mBR, cCNPJ;
@@ -67,5 +67,5 @@ void Init_CNPJ(){
67
67
  cCNPJ = rb_define_class_under(mBR, "CNPJ", rb_cObject);
68
68
  rb_define_method(cCNPJ, "initialize", t_init_cnpj, -1);
69
69
  rb_define_singleton_method(cCNPJ, "valid?", valid_cnpj, 1);
70
- rb_define_method(cCNPJ, "is_cgc?", is_cgc, 0);
70
+ rb_define_method(cCNPJ, "is_cgc?", rb_is_cgc, 0);
71
71
  }
data/lib/br/cnpj.rb CHANGED
@@ -6,18 +6,20 @@ module BR
6
6
 
7
7
  alias_method :orig_valid?, :valid?
8
8
 
9
- # Formata o Cnpj desformatado
9
+ # Format unformated Cnpj
10
10
  #
11
- # Cnpj.formatar(191) # => '00.000.000/0001-91'
11
+ # Cnpj.format(191) # => '00.000.000/0001-91'
12
12
  # Cnpj.formatar(30553786000135) # => "30.553.786/0001-35"
13
13
  #
14
14
  def format(cnpj)
15
15
  cnpj = cnpj.to_s.rjust(14, "0")
16
16
  "%s.%s.%s/%s-%s" % [cnpj[0,2], cnpj[2,3], cnpj[5,3], cnpj[8,4], cnpj[12,2]]
17
17
  end
18
+
19
+ ### pt-BR method name
18
20
  alias_method :formatar, :format
19
21
 
20
- # Desformata o Cnpj formatado
22
+ # Unformat formated Cnpj
21
23
  #
22
24
  # Cnpj.desformatar("02.716.485/0001-40") # => "02716485000140"
23
25
  # Cnpj.unformat("00.086.001/0001-04") # => "00086001000104"
@@ -25,10 +27,12 @@ module BR
25
27
  def unformat(cnpj)
26
28
  cnpj.gsub(/\D/, '')
27
29
  end
30
+
31
+ ### pt-BR method name
28
32
  alias_method :desformatar, :unformat
29
33
 
30
- # Retorna true se o Cnpj for válido
31
- # Retorna falso se o Cnpj for inválido
34
+ # Returns true if Cnpj is valid
35
+ # Retorns false if Cnpj is invalid
32
36
  #
33
37
  # CNPJ.valid?(191) # => true
34
38
  # CNPJ.valid?(123456789101) # => false
@@ -42,18 +46,18 @@ module BR
42
46
  end
43
47
 
44
48
  end
45
- attr_reader :filial, :valid, :raiz, :verif
49
+ attr_reader :filial, :valid, :radix, :digit
46
50
 
47
51
  # Return if the instance CNPJ is valid?
48
52
  #
49
53
  # Cnpj.new(191).valid? # => true
50
54
  #
51
55
  def valid?
52
- valid
56
+ @valid
53
57
  end
54
58
 
55
59
  def to_i
56
- @raiz * 1_000_000 + @filial * 100 + @verif
60
+ @radix * 1_000_000 + @filial * 100 + @digit
57
61
  end
58
62
 
59
63
  # Return the CNPJ with 14 characters
data/spec/br-cnpj_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/spec_helper'
2
2
 
3
3
  module BR
4
4
 
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: br-cnpj
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease: false
5
6
  segments:
6
- - 0
7
7
  - 1
8
- - 6
9
- version: 0.1.6
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Bruno Coimbra
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-19 00:00:00 -03:00
18
+ date: 2010-06-29 00:00:00 -03:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: rspec
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 13
27
30
  segments:
28
31
  - 1
29
32
  - 2
@@ -48,6 +51,9 @@ files:
48
51
  - lib/br/cnpj.rb
49
52
  - LICENSE
50
53
  - README.rdoc
54
+ - spec/spec_helper.rb
55
+ - spec/br-cnpj_spec.rb
56
+ - spec/faker_cnpj.rb
51
57
  has_rdoc: true
52
58
  homepage: http://github.com/bbcoimbra/br-cnpj
53
59
  licenses: []
@@ -58,23 +64,27 @@ rdoc_options:
58
64
  require_paths:
59
65
  - lib
60
66
  required_ruby_version: !ruby/object:Gem::Requirement
67
+ none: false
61
68
  requirements:
62
69
  - - ">="
63
70
  - !ruby/object:Gem::Version
71
+ hash: 3
64
72
  segments:
65
73
  - 0
66
74
  version: "0"
67
75
  required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
68
77
  requirements:
69
78
  - - ">="
70
79
  - !ruby/object:Gem::Version
80
+ hash: 3
71
81
  segments:
72
82
  - 0
73
83
  version: "0"
74
84
  requirements: []
75
85
 
76
86
  rubyforge_project:
77
- rubygems_version: 1.3.6
87
+ rubygems_version: 1.3.7
78
88
  signing_key:
79
89
  specification_version: 3
80
90
  summary: Calcules and validates given CNPJ