Sha256: 82ce5b3da22f89be90e0ebaf1af8a9c2864983b9778cf7f402125169d11869b6
Contents?: true
Size: 1.01 KB
Versions: 4
Compression:
Stored size: 1.01 KB
Contents
# frozen_string_literal: true module ValidatesZipcode class Zipcode include CldrRegexpCollection def initialize(args = {}) @zipcode = args.fetch(:zipcode) @country_alpha2 = args.fetch(:country_alpha2) @excluded_country_codes = args.fetch(:excluded_country_codes, []) @format = args.fetch(:format, false) end def valid? return true if @excluded_country_codes.include?(@country_alpha2) return true unless regexp zipcode = @format ? formatted_zip : @zipcode !!(regexp =~ zipcode) end alias_method :validate, :valid? def format raise InvalidZipcodeError, "invalid zipcode #{formatted_zip} for country #{@country_alpha2.to_s.upcase}" unless valid? formatted_zip end private def regexp @regexp ||= regexp_for_country_alpha2(@country_alpha2) end def formatted_zip @formatted_zip ||= Formatter.new(zipcode: @zipcode, country_alpha2: @country_alpha2).format end end end
Version data entries
4 entries across 4 versions & 1 rubygems