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