Divagações Lunáticas

Como se eu soubesse de uma boa descrição para isto…

Validacao de NIF em Ruby

#!/home/void/.rbenv/shims/ruby

nif = ARGV[0].strip rescue ""

# Structure validation
if nif == nil || nif.length != 9
puts "NIF Invalido: #{nif}"
exit(1)
end

# Control digit
digits = nif.chars
control_digit = 0
9.downto(2).each_with_index do |v, index|
control_digit += v * digits[index].to_i
end
control_digit = 11 - (control_digit % 11)
control_digit = 0 if control_digit >= 10
valid = control_digit == digits[8].to_i

puts "NIF #{valid ? 'V' : 'Inv' }alido: #{nif}"
Importante: Substituir o caminho para o ruby no cabecalho do script.