class Valvat::Checksum::Base
Attributes
vat[R]
Public Class Methods
check_digit_length(len = nil)
click to toggle source
# File lib/valvat/checksum.rb, line 8 def self.check_digit_length(len = nil) @check_digit_length = len if len @check_digit_length || 1 end
new(vat)
click to toggle source
# File lib/valvat/checksum.rb, line 13 def initialize(vat) @vat = vat end
Public Instance Methods
validate()
click to toggle source
# File lib/valvat/checksum.rb, line 17 def validate check_digit == given_check_digit end
Private Instance Methods
figures()
click to toggle source
# File lib/valvat/checksum.rb, line 35 def figures figures_str.split('').map(&:to_i) end
figures_str()
click to toggle source
# File lib/valvat/checksum.rb, line 31 def figures_str str_wo_country[0..-(self.class.check_digit_length + 1)] end
given_check_digit()
click to toggle source
# File lib/valvat/checksum.rb, line 27 def given_check_digit given_check_digit_str.to_i end
given_check_digit_str()
click to toggle source
# File lib/valvat/checksum.rb, line 23 def given_check_digit_str str_wo_country[-self.class.check_digit_length..] end
str_wo_country()
click to toggle source
# File lib/valvat/checksum.rb, line 39 def str_wo_country vat.to_s_wo_country end
sum_figures_by(&block)
click to toggle source
# File lib/valvat/checksum.rb, line 43 def sum_figures_by(&block) figures.reverse.each_with_index.map(&block).inject(:+) end
sum_of_figues_for_pt_si()
click to toggle source
# File lib/valvat/checksum.rb, line 58 def sum_of_figues_for_pt_si 11 - sum_figures_by do |fig, i| fig * (i + 2) end.modulo(11) end
sum_of_figures_for_at_es_it_se(reverse_ints: false)
click to toggle source
# File lib/valvat/checksum.rb, line 51 def sum_of_figures_for_at_es_it_se(reverse_ints: false) ints = reverse_ints ? [2, 1] : [1, 2] sum_figures_by do |fig, i| sum_of_squares(fig * (i.modulo(2).zero? ? ints[0] : ints[1])) end end
sum_of_squares(num)
click to toggle source
# File lib/valvat/checksum.rb, line 47 def sum_of_squares(num) num.to_s.split('').map(&:to_i).inject(:+) end