class SpainDni::Dni
Attributes
id_number[RW]
Public Class Methods
new(id_number)
click to toggle source
# File lib/spain_dni.rb, line 8 def initialize(id_number) @id_number = id_number.to_s end
Public Instance Methods
calculate_check()
click to toggle source
# File lib/spain_dni.rb, line 24 def calculate_check nie_letters = { X: 0, Y: 1, Z: 2 } number = if nie? [nie_letters[@id_number[0].to_sym], @id_number[1..-2]].join else @id_number.chop end number.to_i % 23 end
check_letter()
click to toggle source
# File lib/spain_dni.rb, line 20 def check_letter @id_number[-1] end
dni?()
click to toggle source
# File lib/spain_dni.rb, line 12 def dni? !@id_number[0].match(/\d/).nil? end
id_type()
click to toggle source
# File lib/spain_dni.rb, line 50 def id_type return nil unless valid? nie? ? 'NIE' : 'DNI' end
nie?()
click to toggle source
# File lib/spain_dni.rb, line 16 def nie? @id_number[0].match(/\d/).nil? end
valid?()
click to toggle source
# File lib/spain_dni.rb, line 46 def valid? check_letter == valid_letter end
valid_letter()
click to toggle source
# File lib/spain_dni.rb, line 34 def valid_letter verifiers = { 0 => 'T', 1 => 'R', 2 => 'W', 3 => 'A', 4 => 'G', 5 => 'M', 6 => 'Y', 7 => 'F', 8 => 'P', 9 => 'D', 10 => 'X', 11 => 'B', 12 => 'N', 13 => 'J', 14 => 'Z' ,15 => 'S', 16 => 'Q', 17 => 'V', 18 => 'H', 19 => 'L', 20 => 'C', 21 => 'K', 22 => 'E' } verifiers.each do |key, value| return value if calculate_check.to_i == key end end