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