class Uy::Id
Constants
- FACTORS
Attributes
id[RW]
Public Class Methods
new(id=nil)
click to toggle source
# File lib/uy/id.rb, line 7 def initialize(id=nil) @id = id || Id.generate end
Protected Class Methods
calculate_check_digit(id)
click to toggle source
# File lib/uy/id.rb, line 22 def self.calculate_check_digit(id) id = id.length == 8 ? id.chop : id checksum = id .chars .to_a .map(&:to_i) .zip(FACTORS) .map {|d| d.reduce(&:*)} .reduce(:+) check_digit = (10 - (checksum % 10)) % 10 check_digit end
generate()
click to toggle source
# File lib/uy/id.rb, line 36 def self.generate id = '' 7.times { id += rand(0..9).to_s } id += calculate_check_digit(id).to_s id end
Public Instance Methods
is_valid?()
click to toggle source
# File lib/uy/id.rb, line 11 def is_valid? return false unless @id =~ /\d{8}/ return false unless Id.calculate_check_digit(@id) == @id[7].to_i true end
Also aliased as: valid?