Sha256: cca4bb7692487c1db4e7f48b005e44b9a62bf62503eda33b569b59df64ad6002

Contents?: true

Size: 1.16 KB

Versions: 6

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

require 'ffaker/address'

module FFaker
  module AddressUA
    extend ModuleUtils
    extend self

    POSTAL_CODE_FORMAT        = ['#####'].freeze
    BUILDING_NUMBER_FORMATS   = %w[## # ###].freeze
    APPARTMENT_NUMBER_FORMATS = %w[# ## ###].freeze

    def country
      fetch_sample(COUNTRY)
    end

    def city
      fetch_sample(CITY)
    end

    def province
      fetch_sample(PROVINCE)
    end

    def zip_code
      numerify_mask(POSTAL_CODE_FORMAT, true)
    end

    def street_name
      "вул. #{fetch_sample(STREET)}"
    end

    def street_address(include_secondary = false)
      str = +"#{street_name}, #{building_number}"
      str << ", кв. #{appartment_number}" if include_secondary
      str
    end

    def building_number
      numerify_mask(BUILDING_NUMBER_FORMATS)
    end

    def appartment_number
      numerify_mask(APPARTMENT_NUMBER_FORMATS)
    end

    private

    def numerify_mask(masks_arr, allow_first_zero = false)
      if allow_first_zero
        FFaker.numerify(masks_arr)
      else
        fetch_sample(masks_arr).sub(/#/) { rand(1..9).to_s }.gsub(/#/) { rand(0..9).to_s }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ffaker-2.17.0 lib/ffaker/address_ua.rb
ffaker-2.16.0 lib/ffaker/address_ua.rb
ffaker-2.15.0 lib/ffaker/address_ua.rb
ffaker-2.14.0 lib/ffaker/address_ua.rb
ffaker-2.13.0 lib/ffaker/address_ua.rb
ffaker-2.12.0 lib/ffaker/address_ua.rb