Sha256: 9c7154deb35586e826e1b118042b7c8781d7b60e135228f16e38fd7340cec865
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
require "spain_dni/version" # Validates check letter for Spanish DNI and NIE module SpainDni class Dni attr_accessor :id_number def initialize(id_number) @id_number = id_number.to_s end def dni? !@id_number[0].match(/\d/).nil? end def nie? @id_number[0].match(/\d/).nil? end def check_letter @id_number[-1] end 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 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 def valid? check_letter == valid_letter end def id_type return nil unless valid? nie? ? 'NIE' : 'DNI' end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spain_dni-0.1.0 | lib/spain_dni.rb |