class BrDocuments::Suframa
Public Class Methods
new(number)
click to toggle source
# File lib/br_documents/suframa.rb, line 7 def initialize(number) @number = number end
Public Instance Methods
formatted()
click to toggle source
# File lib/br_documents/suframa.rb, line 11 def formatted valid? ? format_number : '' end
valid?()
click to toggle source
# File lib/br_documents/suframa.rb, line 15 def valid? valid_pattern? && !sequence_of_equal_numbers? && valid_check_digit? end
Private Instance Methods
format_number()
click to toggle source
# File lib/br_documents/suframa.rb, line 42 def format_number @number.sub(/(\d{2})(\d{4})(\d{3})/, '\\1.\\2.\\3') end
number_without_mask()
click to toggle source
# File lib/br_documents/suframa.rb, line 31 def number_without_mask @number_without_mask ||= @number.delete('.') end
sequence_of_equal_numbers?()
click to toggle source
# File lib/br_documents/suframa.rb, line 27 def sequence_of_equal_numbers? number_without_mask.chars.uniq.length == 1 end
valid_check_digit?()
click to toggle source
# File lib/br_documents/suframa.rb, line 35 def valid_check_digit? weights = [9, 8, 7, 6, 5, 4, 3, 2] check_digit = generate_check_digit(number_without_mask, weights) number_without_mask[8] == check_digit.to_s end
valid_pattern?()
click to toggle source
# File lib/br_documents/suframa.rb, line 23 def valid_pattern? /^(\d{2}\.\d{4}\.\d{3})$|^(\d{9})$/.match(@number).present? end