Sha256: e58cf952b112d142d6f5da9201659709213e4643e5a20f902e3641775d38f9cd

Contents?: true

Size: 683 Bytes

Versions: 8

Compression:

Stored size: 683 Bytes

Contents

require 'csv'

module Arbetsformedlingen
  class MunicipalityCode
    CODE_MAP = CSV.read(
      File.expand_path('../../../../data/municipality-codes.csv', __FILE__)
    ).to_h.freeze
    CODES_MAP_INVERTED = CODE_MAP.invert.freeze

    def self.to_code(name)
      normalized = normalize(name)
      CODE_MAP.fetch(normalized) do
        normalized if CODES_MAP_INVERTED[normalized]
      end
    end

    def self.valid?(name)
      !to_code(name).nil?
    end

    def self.normalize(name)
      name.to_s.strip
    end

    def self.to_form_array(name_only: false)
      return CODE_MAP.to_a unless name_only

      CODE_MAP.map { |name, _code| [name, name] }
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
arbetsformedlingen-0.5.0 lib/arbetsformedlingen/codes/municipality_code.rb
arbetsformedlingen-0.4.1 lib/arbetsformedlingen/codes/municipality_code.rb
arbetsformedlingen-0.4.0 lib/arbetsformedlingen/codes/municipality_code.rb
arbetsformedlingen-0.3.0 lib/arbetsformedlingen/codes/municipality_code.rb
arbetsformedlingen-0.2.0 lib/arbetsformedlingen/codes/municipality_code.rb
arbetsformedlingen-0.1.2 lib/arbetsformedlingen/codes/municipality_code.rb
arbetsformedlingen-0.1.1 lib/arbetsformedlingen/codes/municipality_code.rb
arbetsformedlingen-0.1.0 lib/arbetsformedlingen/codes/municipality_code.rb