Sha256: 7b5e712f81e3d72e4aa74d93e237531c43788e56488a5f0c702000bcd5778b90
Contents?: true
Size: 639 Bytes
Versions: 1
Compression:
Stored size: 639 Bytes
Contents
module Sjekksum module Luhn extend self extend Shared def of input_value raise_on_type_mismatch input_value digits = input_value.to_s.chars.map(&:to_i) sum = digits.reverse.map.with_index do |digit, idx| idx.even? ? (digit * 2).divmod(10).reduce(&:+) : digit end.reverse.reduce(&:+) (10 - sum % 10) % 10 end def valid? input_value raise_on_type_mismatch input_value self.of(input_value.div(10)) == (input_value % 10) end def convert input_value raise_on_type_mismatch input_value (input_value * 10) + self.of(input_value) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sjekksum-0.0.1 | lib/sjekksum/luhn.rb |