module Europe::Vat::Format

Format

Constants

VAT_REGEX

Public Class Methods

match_vat_number(number, country_code) click to toggle source
# File lib/europe/vat/format.rb, line 55
def self.match_vat_number(number, country_code)
  if VAT_REGEX[country_code.to_sym].is_a?(Array)
    VAT_REGEX[country_code.to_sym].each do |regex|
      return true if regex.match(number)
    end
  elsif VAT_REGEX[country_code.to_sym].match(number)
    return true
  end
  false
end
sanitize_number(number, country_code) click to toggle source
# File lib/europe/vat/format.rb, line 47
def self.sanitize_number(number, country_code)
  if %i[DK FR].include?(country_code)
    number.gsub(/\.|\t/, '').upcase
  else
    number.gsub(/\.|\t|\s/, '').upcase
  end
end
validate(number) click to toggle source
# File lib/europe/vat/format.rb, line 39
def self.validate(number)
  country_code = number[0..1].to_sym
  number = sanitize_number(number, country_code)
  return false unless VAT_REGEX.key?(country_code)

  match_vat_number(number, country_code)
end