class BrDocuments::IE::RN

Protected Instance Methods

format_ie(number) click to toggle source
# File lib/br_documents/ie/rn.rb, line 11
def format_ie(number)
  if number.gsub(/(\.)|(\-)/, '').length == 9
    number.sub(/(\d{2})(\d{3})(\d{3})(\d{1})/, '\\1.\\2.\\3-\\4')
  else
    number.sub(/(\d{2})(\d{1})(\d{3})(\d{3})(\d{1})/, '\\1.\\2.\\3.\\4-\\5')
  end
end
valid_check_digit?() click to toggle source
# File lib/br_documents/ie/rn.rb, line 23
def valid_check_digit?
  @number.gsub!(/[\.\/-]/, '')

  weight = []
  @number.length.downto(2).each { |w| weight << w }

  @number[-1] == generate_check_digit(@number, weight).to_s
end
valid_format?() click to toggle source
# File lib/br_documents/ie/rn.rb, line 19
def valid_format?
  valid_old_format or valid_new_format
end

Private Instance Methods

generate_check_digit(values, weights) click to toggle source
# File lib/br_documents/ie/rn.rb, line 44
def generate_check_digit(values, weights)
  sum = reduce_weights(values, weights)
  mod = sum * 10 % 11
  mod == 10 ? 0 : mod
end
valid_new_format() click to toggle source
# File lib/br_documents/ie/rn.rb, line 39
def valid_new_format
  regex = /^(\d{2}\.\d{1}\.\d{3}\.\d{3}\-\d{1})$|^(\d{10})$/
  regex.match(@number).present?
end
valid_old_format() click to toggle source
# File lib/br_documents/ie/rn.rb, line 34
def valid_old_format
  regex = /^(\d{2}\.\d{3}\.\d{3}\-\d{1})$|^(\d{9})$/
  regex.match(@number).present?
end