class RussianPost::Barcode::International

Constants

WEIGHT_FACTORS

Public Class Methods

format() click to toggle source
# File lib/russianpost/barcode/international.rb, line 9
def self.format
  /\A([A-Z]{2}\d{9}[A-Z]{2})\Z/
end

Public Instance Methods

valid?() click to toggle source
Calls superclass method RussianPost::Barcode::Base#valid?
# File lib/russianpost/barcode/international.rb, line 13
def valid?
  super && country_exists?
end

Private Instance Methods

checkdigit() click to toggle source
# File lib/russianpost/barcode/international.rb, line 23
def checkdigit
  checksum < 11 ? checksum % 10 : 5
end
checksum() click to toggle source
# File lib/russianpost/barcode/international.rb, line 27
def checksum
  11 - (digits.zip(WEIGHT_FACTORS).map{|i| i.reduce(:*)}.reduce(:+) % 11)
end
country_exists?() click to toggle source
# File lib/russianpost/barcode/international.rb, line 19
def country_exists?
  !Iso3166Ru.find_by(alpha2: barcode[-2..-1]).nil?
end