Class: GenericID

Inherits:
Object
  • Object
show all
Defined in:
lib/brid/generic_id.rb

Direct Known Subclasses

Brid::CNPJ, Brid::CPF, Brid::PIS, Brid::TituloEleitor

Instance Method Summary collapse

Constructor Details

#initialize(number) ⇒ GenericID

Returns a new instance of GenericID.



5
6
7
8
9
10
11
# File 'lib/brid/generic_id.rb', line 5

def initialize number
  @number = clear_number(number)

  if number_length > 0 
    raise ArgumentError.new "invalid number" if @number.length != number_length
  end
end

Instance Method Details

#check_digitsObject



13
14
15
16
17
# File 'lib/brid/generic_id.rb', line 13

def check_digits
  @check_digits ||= begin
    @number[-check_digits_length, check_digits_length]
  end
end

#check_digits_lengthObject



3
# File 'lib/brid/generic_id.rb', line 3

def check_digits_length; 1; end

#invalid_sequential?Boolean

Returns:

  • (Boolean)


33
34
35
36
37
# File 'lib/brid/generic_id.rb', line 33

def invalid_sequential?
  @invalid_sequential ||=begin
    sequential.chars.to_a.uniq.count.eql? 1
  end
end

#number_lengthObject



2
# File 'lib/brid/generic_id.rb', line 2

def number_length; 0; end

#sequentialObject



19
20
21
22
23
# File 'lib/brid/generic_id.rb', line 19

def sequential
  @sequential ||= begin
    @number[0, @number.length - check_digits_length]
  end
end

#to_sObject



39
40
41
# File 'lib/brid/generic_id.rb', line 39

def to_s
  "#{sequential}-#{check_digits}"
end

#valid?Boolean

Returns:

  • (Boolean)


25
26
27
28
29
30
31
# File 'lib/brid/generic_id.rb', line 25

def valid?
  @valid ||= begin
    valid_number == @number and not invalid_sequential?
  rescue TypeError
    false
  end
end