Module: Olyx::Guardrails::Pii::LuhnChecksum
- Defined in:
- lib/olyx/guardrails/pii/luhn_checksum.rb
Overview
Shared Luhn digit-parsing and checksum validity, reused by every format that applies the Luhn algorithm at its own fixed or minimum length (cards, Canadian SIN) so that length rule is the only thing each caller needs to own.
Class Method Summary collapse
Class Method Details
.checksum(digits) ⇒ Object
17 18 19 |
# File 'lib/olyx/guardrails/pii/luhn_checksum.rb', line 17 def checksum(digits) digits.reverse.each_with_index.sum { |digit, index| index.even? ? digit : doubled(digit) } end |
.digits(number) ⇒ Object
13 |
# File 'lib/olyx/guardrails/pii/luhn_checksum.rb', line 13 def digits(number) = number.gsub(/\D/, '').chars.map(&:to_i) |
.valid?(digits) ⇒ Boolean
15 |
# File 'lib/olyx/guardrails/pii/luhn_checksum.rb', line 15 def valid?(digits) = (checksum(digits) % 10).zero? |