Sha256: dfcf27bbbbdfc22fe8516fb17f60e67c6e2a21a1f0629888491fb31d4a86606c

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

# coding: utf-8
require "jp_prefecture/mapping"

module JpPrefecture
  # 都道府県のコードと名前を扱うクラス
  class Prefecture
    include JpPrefecture::Mapping

    attr_accessor :code, :name, :name_e

    # 配列から都道府県クラスを生成
    #
    # @example
    #   # コード/名前から都道府県クラスを生成
    #   JpPrefecture::Prefecture.build 1, '北海道', 'Hokkaido'
    #
    # @param pref [Integer] 都道府県コード
    # @param name [String] 都道府県名
    # @param name_e [String] 都道府県名(英語表記)
    def self.build(code, name, name_e)
      p = self.new

      p.code    = code
      p.name    = name
      p.name_e  = name_e

      p
    end

    # 都道府県コードから都道府県を検索
    #
    # @example
    #   JpPrefecture::Prefecture.find 1
    #
    # @param code [Integer] 都道府県コード
    # @return [JpPrefecture::Prefecture] 都道府県が見つかった場合は都道府県クラス
    # @return [nil] 都道府県が見つからない場合は nil
    def self.find(code)
      names = PREFECTURE_CODE_NAME[code]
      return nil unless names

      self.build(code, names[:name], names[:name_e])
    end


    # すべての都道府県クラスを返す
    #
    # @example
    #   # 都道府県の一覧を取得
    #   JpPrefecture::Prefecture.all
    #
    #   # collection_select で選択肢を生成
    #   f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name
    #
    #   # collection_select で選択肢を生成(英語表記)
    #   f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name_e
    #
    # @return [Array] 都道府県クラスの配列
    def self.all
      PREFECTURE_CODE_NAME.map do |pref|
        names = pref[1]
        self.build(pref[0], names[:name], names[:name_e])
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jp_prefecture-0.2.0 lib/jp_prefecture/prefecture.rb