class Cuit

Public Class Methods

new(cuit) click to toggle source
# File lib/cuit.rb, line 2
def initialize(cuit)
  @cuit = cuit.to_s.tr('^0-9', '')
end

Public Instance Methods

to_s() click to toggle source
# File lib/cuit.rb, line 6
def to_s
  [type, dni, check_digit].join('-')
end
valid?() click to toggle source
# File lib/cuit.rb, line 10
def valid?
  @cuit.size == 11 && calculated_digit == check_digit
end

Private Instance Methods

calculated_digit() click to toggle source
# File lib/cuit.rb, line 32
def calculated_digit
  sequence = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
  sum = sequence
        .zip(cuit_sequence)
        .reduce(0) { |a, e| a + e.reduce(:*) }

  diff = 11 - sum % 11

  diff == 11 ? 0 : diff
end
check_digit() click to toggle source
# File lib/cuit.rb, line 24
def check_digit
  @check_digit ||= @cuit[-1].to_i
end
cuit_sequence() click to toggle source
# File lib/cuit.rb, line 28
def cuit_sequence
  (type + dni).chars.map(&:to_i)
end
dni() click to toggle source
# File lib/cuit.rb, line 20
def dni
  @dni ||= @cuit[2, 8]
end
type() click to toggle source
# File lib/cuit.rb, line 16
def type
  @type ||= @cuit[0, 2]
end