Class: CNPJ

Inherits:
Object
  • Object
show all
Defined in:
lib/cnpj.rb,
lib/cnpj/cli.rb,
lib/cnpj/formatter.rb,
lib/cnpj/generator.rb,
lib/cpf_cnpj/version.rb,
lib/cnpj/verifier_digit.rb

Defined Under Namespace

Classes: CLI, Formatter, Generator, VerifierDigit

Constant Summary collapse

REGEX =
/\A\d{2}\.\d{3}.\d{3}\/\d{4}-\d{2}\Z/
BLACKLIST =
[
  "00000000000000",
  "11111111111111",
  "22222222222222",
  "33333333333333",
  "44444444444444",
  "55555555555555",
  "66666666666666",
  "77777777777777",
  "88888888888888",
  "99999999999999"
]
VERSION =
"0.2.0"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number) ⇒ CNPJ

Returns a new instance of CNPJ.



33
34
35
# File 'lib/cnpj.rb', line 33

def initialize(number)
  @number = number.to_s
end

Instance Attribute Details

#numberObject

Returns the value of attribute number.



7
8
9
# File 'lib/cnpj.rb', line 7

def number
  @number
end

Class Method Details

.generate(formatted = false) ⇒ Object



28
29
30
31
# File 'lib/cnpj.rb', line 28

def self.generate(formatted = false)
  cnpj = new(Generator.generate)
  formatted ? cnpj.formatted : cnpj.stripped
end

.valid?(number) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/cnpj.rb', line 24

def self.valid?(number)
  new(number).valid?
end

Instance Method Details

#formattedObject



48
49
50
# File 'lib/cnpj.rb', line 48

def formatted
  @formatted ||= Formatter.format(number)
end

#strippedObject



44
45
46
# File 'lib/cnpj.rb', line 44

def stripped
  @stripped ||= Formatter.strip(number)
end

#valid?Boolean

Returns:

  • (Boolean)


52
53
54
55
56
57
58
59
60
61
# File 'lib/cnpj.rb', line 52

def valid?
  return unless stripped.size == 14
  return if BLACKLIST.include?(stripped)

  _numbers = numbers[0...12]
  _numbers << VerifierDigit.generate(_numbers)
  _numbers << VerifierDigit.generate(_numbers)

  _numbers[-2, 2] == numbers[-2, 2]
end