module Sjekksum::Damm
Module for calculation and validation of Damm
checksums
@see en.wikipedia.org/wiki/Damm_algorithm Damm
algorithm
Constants
- QUASIGROUP
The totally anti-symmetric quasigroup @see archiv.ub.uni-marburg.de/diss/z2004/0516/pdf/dhmd.pdf [PDF]
Damm
, H. Michael (2004). Total anti-symmetrische Quasigruppen (Dr. rer. nat.). Philipps-Universität Marburg.
Public Instance Methods
Transforms a number by appending the Damm
checksum digit
@example
Sjekksum::Damm.convert(572) #=> 5724
@param number [Integer, String] number without a checksum
@return [Integer, String] final number including the checksum
# File lib/sjekksum/damm.rb, line 66 def convert number raise_on_type_mismatch number typed_conversion number end
Calculates Damm
checksum
@example
Sjekksum::Damm.of(572) #=> 4
@param number [Integer, String] number for which the checksum should be calculated
@return [Integer] calculated checksum
# File lib/sjekksum/damm.rb, line 35 def of number raise_on_type_mismatch number digits = convert_number_to_digits(number) digits.reduce(0){ |check, digit| QUASIGROUP[check][digit] } end
Damm
validation of provided number
@example
Sjekksum::Damm.valid?(5724) #=> true
@param number [Integer, String] number with included checksum
@return [Boolean]
# File lib/sjekksum/damm.rb, line 51 def valid? number raise_on_type_mismatch number self.of(number).zero? end