class BraDocuments::NationalRegisterBase
Constants
- BASE
- NOT_NUMBER_PATTERN
Private Class Methods
complete!(numbers)
click to toggle source
# File lib/bra_documents/national_register_base.rb, line 11 def complete!(numbers) 2.times { numbers.push(verification_digit_for(numbers)) } numbers.join end
number_for(number_description, number_size, given_value)
click to toggle source
# File lib/bra_documents/national_register_base.rb, line 16 def number_for(number_description, number_size, given_value) given_value = only_digits_for(given_value) if !given_value.to_s.empty? raise ArgumentError, "#{number_description} number must be a number with #{number_size} digits." unless given_value.size == number_size given_value.split('').map(&:to_i) else number_with(number_size) end end
number_with(size)
click to toggle source
# File lib/bra_documents/national_register_base.rb, line 26 def number_with(size) size.times.map { rand(10) } end
only_digits_for(number)
click to toggle source
# File lib/bra_documents/national_register_base.rb, line 30 def only_digits_for(number) number.to_s.gsub(NOT_NUMBER_PATTERN, '') end
sum_and_multiply(numbers, multiplicators)
click to toggle source
# File lib/bra_documents/national_register_base.rb, line 45 def sum_and_multiply(numbers, multiplicators) multiplicators.map .with_index { |multiplicator, position| numbers[position] * multiplicator } .sum end
verification_digit_for(numbers)
click to toggle source
# File lib/bra_documents/national_register_base.rb, line 34 def verification_digit_for(numbers) verification_digit_multiplicators = verification_digit_multiplicators_for(numbers) sum_and_multiplication = sum_and_multiply(numbers, verification_digit_multiplicators) verified_digit(sum_and_multiplication) end
verified_digit(sum_and_multiplication)
click to toggle source
# File lib/bra_documents/national_register_base.rb, line 40 def verified_digit(sum_and_multiplication) rest = sum_and_multiplication % BASE rest < 2 ? 0 : BASE - rest end