Sha256: b36f65a667a7c8b35cf197aede1bb12ead0f2c71f506cf95d3187abc3c019abc

Contents?: true

Size: 731 Bytes

Versions: 1

Compression:

Stored size: 731 Bytes

Contents

#see: http://pt.wikipedia.org/wiki/N%C3%BAmero_de_identifica%C3%A7%C3%A3o_fiscal
module Citizenship
  def self.valid_nif!(number, options = {})
    strict = options.fetch(:strict, false)
    id_number = strict ? number : String(number).delete(' ')
    first_digit_universe = [1, 2, 5, 6, 8, 9]

    raise NIFError.new(:size) if id_number.size != 9
    raise NIFError.new(:prefix, prefixes: first_digit_universe.join(', ')) unless first_digit_universe.include?(id_number[0].to_i)
    raise NIFError.new(:invalid_check_digit) unless decimal_check_digit_match?(id_number[0..-2], id_number[-1])
    number
  end

  def self.valid_nif?(number, options = {})
    valid_nif!(number, options)
    true
  rescue NIFError
    false
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
citizenship-1.0.0 lib/citizenship/nif.rb