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