class PostcodeValidator
A simple postcode validator
Can be used to validate a post code, regarding a country specified through the :country option as an ISO-3166-2 code.
Constants
- VERSION
Public Instance Methods
valid?(postcode, options = {})
click to toggle source
# File lib/postcode_validator.rb, line 25 def valid?(postcode, options = {}) iso = country_as_iso(options) postcode = postcode.to_s.strip validator = validator_for(iso) validator ? validator.valid?(postcode) : postcode.blank? end
Protected Instance Methods
country_as_iso(options)
click to toggle source
# File lib/postcode_validator.rb, line 34 def country_as_iso(options) raise Error, 'Missing :country option' unless options.key?(:country) && !options[:country].nil? iso = TwitterCldr::Shared::Territories.normalize_territory_code(options[:country]) # raise ArgumentError if :iso is not a valid territory code iso if TwitterCldr::Shared::TerritoriesContainment.contains?('001', iso.to_s.upcase) rescue ArgumentError => e raise Error, e.message end
validator_for(iso)
click to toggle source
# File lib/postcode_validator.rb, line 45 def validator_for(iso) TwitterCldr::Shared::PostalCodes.for_territory(iso) rescue TwitterCldr::Shared::InvalidTerritoryError # No validator exists for :iso_code, this country may not use postcodes at all. nil end