module VerificadorBoletoBr::Calculus::Module11

Public Instance Methods

modulo11(str) click to toggle source
# File lib/verificador_boleto_br/calculus/module11.rb, line 4
def modulo11(str)
  peso = 2
  soma = 0

  str = str.chars.reverse

  str.each do |char|
    soma += char.to_i * peso
    peso = peso == 9 ? 2 : peso + 1
  end
  dv = soma % 11
  return 0 if dv == 0 || dv == 1

  return 1 if dv == 10

  11 - dv
end