class CzechPost::CodeGenerator::CheckDigit
Constants
- DIGIT
- SIZE
Attributes
client_id[R]
order[R]
Public Class Methods
new(order, client_id)
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 9 def initialize(order, client_id) @order = order @client_id = client_id end
Public Instance Methods
run()
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 14 def run if modulo > 1 11 - modulo elsif modulo == 0 5 elsif modulo == 1 0 end end
valid?()
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 24 def valid? size == SIZE end
Private Instance Methods
full_number()
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 40 def full_number "#{client_id}#{order.id}" end
get_number_by_index(index)
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 30 def get_number_by_index(index) full_number.to_s[index].to_i end
modulo(value = 11)
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 52 def modulo(value = 11) @modulo ||= sum % value end
size()
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 44 def size @size ||= full_number.size - 1 end
sum()
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 48 def sum @sum ||= times_digit.inject { |a, e| a + e } end
times_digit()
click to toggle source
# File lib/czech_post/code_generator/check_digit.rb, line 34 def times_digit (0..SIZE).map do |index| DIGIT[index].to_i * get_number_by_index(index) end end