class IdNumberLatam::ClDni
Attributes
digit[R]
Public Class Methods
new(id_number, opts = {})
click to toggle source
Calls superclass method
IdNumberLatam::Base::new
# File lib/id_number_latam/cl_dni.rb, line 7 def initialize(id_number, opts = {}) super @country = :cl @digit = unformat.slice(-1) end
Public Instance Methods
format()
click to toggle source
# File lib/id_number_latam/cl_dni.rb, line 17 def format dni = unformat digit = dni.slice!(-1) formatted_dni = dni.reverse.gsub(/(\d{3})(?=\d)/, '\\1.').reverse [formatted_dni, digit].join("-") end
unformat()
click to toggle source
# File lib/id_number_latam/cl_dni.rb, line 13 def unformat id_number.gsub(/\D/, "") end
valid?()
click to toggle source
# File lib/id_number_latam/cl_dni.rb, line 24 def valid? return false unless valid_length dni = unformat digit = dni.slice!(-1) [*0..9, "K"][dni.to_s.reverse.chars.inject([0, 0]) { |(i, a), n| [i + 1, a - n.to_i * (i % 6 + 2)] }[1] % 11].to_s == digit end
Private Instance Methods
valid_length()
click to toggle source
# File lib/id_number_latam/cl_dni.rb, line 35 def valid_length unformat.size >= 8 && unformat.size <= 9 end