class IdNumberLatam::PeDni
Constants
- LETTER
- NUMBERS
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/pe_dni.rb, line 10 def initialize(id_number, opts = {}) super @country = :pe @digit = unformat.slice(-1) end
Public Instance Methods
format()
click to toggle source
# File lib/id_number_latam/pe_dni.rb, line 20 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/pe_dni.rb, line 16 def unformat id_number.gsub(/\D/, "") end
valid?()
click to toggle source
# File lib/id_number_latam/pe_dni.rb, line 27 def valid? return false unless valid_length dni = unformat digit = dni.slice!(-1) key = (11 - (dni.chars.zip("32765432".chars).map { |p| p.map(&:to_i).inject(&:*) }.sum % 11)) NUMBERS[key].to_s == digit end
valid_length()
click to toggle source
# File lib/id_number_latam/pe_dni.rb, line 38 def valid_length unformat.size == 9 end