jp_prefecture 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +0 -1
- data/CHANGELOG.md +7 -0
- data/README.md +41 -3
- data/lib/jp_prefecture/prefecture.rb +46 -6
- data/lib/jp_prefecture/version.rb +1 -1
- data/spec/prefecture_spec.rb +35 -4
- metadata +2 -3
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -33,10 +33,14 @@ JIS X 0402 で定義されている都道府県コードをベースに、
|
|
33
33
|
|
34
34
|
## 使い方
|
35
35
|
|
36
|
-
###
|
36
|
+
### ライブラリの読み込み
|
37
37
|
|
38
38
|
require 'jp_prefecture'
|
39
39
|
|
40
|
+
### 都道府県コードから都道府県を検索
|
41
|
+
|
42
|
+
単純に都道府県コードを渡すと、都道府県コードから都道府県を検索します:
|
43
|
+
|
40
44
|
pref = JpPrefecture::Prefecture.find 13
|
41
45
|
# => #<JpPrefecture::Prefecture:0x007fd0a3d43fe8 @code=13, @name="東京都", @name_e="Tokyo">
|
42
46
|
pref.code
|
@@ -46,6 +50,21 @@ JIS X 0402 で定義されている都道府県コードをベースに、
|
|
46
50
|
pref.name_e
|
47
51
|
# => "Tokyo"
|
48
52
|
|
53
|
+
以下のように渡すことも可能です:
|
54
|
+
|
55
|
+
JpPrefecture::Prefecture.find code: 13
|
56
|
+
|
57
|
+
### 都道府県名から都道府県を検索
|
58
|
+
|
59
|
+
JpPrefecture::Prefecture.find name: "東京都"
|
60
|
+
# => #<JpPrefecture::Prefecture:0x007ff672271800 @code=13, @name="東京都", @name_e="Tokyo">
|
61
|
+
|
62
|
+
JpPrefecture::Prefecture.find name: "Tokyo"
|
63
|
+
# => #<JpPrefecture::Prefecture:0x007fb3c2828b10 @code=13, @name="東京都", @name_e="Tokyo">
|
64
|
+
|
65
|
+
JpPrefecture::Prefecture.find name: "tokyo"
|
66
|
+
# => #<JpPrefecture::Prefecture:0x007f965c0c5a40 @code=13, @name="東京都", @name_e="Tokyo">
|
67
|
+
|
49
68
|
### 都道府県の一覧を取得
|
50
69
|
|
51
70
|
JpPrefecture::Prefecture.all
|
@@ -74,7 +93,7 @@ app/models/place.rb:
|
|
74
93
|
生成されるメソッド名は `method_name` というオプションで指定することができます:
|
75
94
|
|
76
95
|
# model
|
77
|
-
jp_prefecture :prefecture_code, :
|
96
|
+
jp_prefecture :prefecture_code, method_name: :pref
|
78
97
|
|
79
98
|
place = Place.new
|
80
99
|
place.prefecture_code = 13
|
@@ -87,9 +106,21 @@ app/models/place.rb:
|
|
87
106
|
|
88
107
|
f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name
|
89
108
|
|
90
|
-
#
|
109
|
+
# 英語表記で出力
|
91
110
|
f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name_e
|
92
111
|
|
112
|
+
### マイグレーション
|
113
|
+
|
114
|
+
カラムのタイプは `integer` か `string` で作成してください。
|
115
|
+
|
116
|
+
マイグレーションのサンプル:
|
117
|
+
|
118
|
+
class AddPrefectureCodeToPlaces < ActiveRecord::Migration
|
119
|
+
def change
|
120
|
+
add_column :places, :prefecture_code, :integer
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
93
124
|
## ドキュメント
|
94
125
|
|
95
126
|
[http://rdoc.info/github/chocoby/jp_prefecture/master/frames/index](http://rdoc.info/github/chocoby/jp_prefecture/master/frames/index)
|
@@ -98,6 +129,13 @@ app/models/place.rb:
|
|
98
129
|
|
99
130
|
GitHub の [Issues](https://github.com/chocoby/jp_prefecture/issues) を参照してください。
|
100
131
|
|
132
|
+
## 対象バージョン
|
133
|
+
|
134
|
+
* Ruby: 1.9.3 / 2.0.0 以上
|
135
|
+
* Rails: 3.2 以上
|
136
|
+
|
137
|
+
Ruby 1.8.7 のサポートは [v0.1.1](https://github.com/chocoby/jp_prefecture/tree/v0.1.1) で終了しました。
|
138
|
+
|
101
139
|
## Contributing
|
102
140
|
|
103
141
|
1. Fork it
|
@@ -12,7 +12,7 @@ module JpPrefecture
|
|
12
12
|
#
|
13
13
|
# @example
|
14
14
|
# # コード/名前から都道府県クラスを生成
|
15
|
-
# JpPrefecture::Prefecture.build
|
15
|
+
# JpPrefecture::Prefecture.build(1, '北海道', 'Hokkaido')
|
16
16
|
#
|
17
17
|
# @param pref [Integer] 都道府県コード
|
18
18
|
# @param name [String] 都道府県名
|
@@ -27,17 +27,44 @@ module JpPrefecture
|
|
27
27
|
p
|
28
28
|
end
|
29
29
|
|
30
|
-
#
|
30
|
+
# 都道府県を検索
|
31
31
|
#
|
32
32
|
# @example
|
33
|
-
#
|
33
|
+
# # 都道府県コードから検索
|
34
|
+
# JpPrefecture::Prefecture.find(1)
|
35
|
+
# JpPrefecture::Prefecture.find(code: 1)
|
34
36
|
#
|
35
|
-
#
|
37
|
+
# # 都道府県名から検索
|
38
|
+
# JpPrefecture::Prefecture.find(name: '北海道')
|
39
|
+
#
|
40
|
+
# # 英語表記の都道府県名から検索
|
41
|
+
# JpPrefecture::Prefecture.find(name: 'Hokkaido')
|
42
|
+
# JpPrefecture::Prefecture.find(name: 'hokkaido')
|
43
|
+
#
|
44
|
+
# @param args [Integer] 都道府県コード
|
45
|
+
# @param [Hash] args 検索条件
|
46
|
+
# @option args [Integer] :code 都道府県コード
|
47
|
+
# @option args [String] :name 都道府県名/英語表記の都道府県名
|
36
48
|
# @return [JpPrefecture::Prefecture] 都道府県が見つかった場合は都道府県クラス
|
37
49
|
# @return [nil] 都道府県が見つからない場合は nil
|
38
|
-
def self.find(
|
50
|
+
def self.find(args)
|
51
|
+
return if args.nil?
|
52
|
+
|
53
|
+
if args.is_a?(Integer) || args.is_a?(String)
|
54
|
+
code = args.to_i
|
55
|
+
else
|
56
|
+
code =
|
57
|
+
case args.keys[0]
|
58
|
+
when :name
|
59
|
+
self.find_code_by_name(args[:name])
|
60
|
+
when :code
|
61
|
+
args[:code].to_i
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
39
65
|
names = PREFECTURE_CODE_NAME[code]
|
40
|
-
|
66
|
+
|
67
|
+
return unless names
|
41
68
|
|
42
69
|
self.build(code, names[:name], names[:name_e])
|
43
70
|
end
|
@@ -62,5 +89,18 @@ module JpPrefecture
|
|
62
89
|
self.build(pref[0], names[:name], names[:name_e])
|
63
90
|
end
|
64
91
|
end
|
92
|
+
|
93
|
+
protected
|
94
|
+
|
95
|
+
# 名前から都道府県コードを検索
|
96
|
+
def self.find_code_by_name(name)
|
97
|
+
name.capitalize!
|
98
|
+
|
99
|
+
result = PREFECTURE_CODE_NAME.select { |_, v| v.has_value?(name) }.first
|
100
|
+
return if result.nil?
|
101
|
+
|
102
|
+
result[0]
|
103
|
+
end
|
104
|
+
|
65
105
|
end
|
66
106
|
end
|
data/spec/prefecture_spec.rb
CHANGED
@@ -10,17 +10,48 @@ describe JpPrefecture::Prefecture do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
describe '.find' do
|
13
|
-
|
14
|
-
let(:pref) { JpPrefecture::Prefecture.find(
|
13
|
+
shared_examples "都道府県が見つかる" do |arg|
|
14
|
+
let(:pref) { JpPrefecture::Prefecture.find(arg) }
|
15
15
|
it { pref.code.should eq 1 }
|
16
16
|
it { pref.name.should eq '北海道' }
|
17
17
|
it { pref.name_e.should eq 'Hokkaido' }
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
let(:pref) { JpPrefecture::Prefecture.find(
|
20
|
+
shared_examples '都道府県が見つからない' do |arg|
|
21
|
+
let(:pref) { JpPrefecture::Prefecture.find(arg) }
|
22
22
|
it { pref.should be_nil }
|
23
23
|
end
|
24
|
+
|
25
|
+
describe '都道府県コード' do
|
26
|
+
it_behaves_like "都道府県が見つかる", 1
|
27
|
+
it_behaves_like "都道府県が見つからない", 99
|
28
|
+
it_behaves_like "都道府県が見つかる", "1"
|
29
|
+
it_behaves_like "都道府県が見つかる", "01"
|
30
|
+
it_behaves_like "都道府県が見つからない", "99"
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '都道府県コード(キーワード引数)' do
|
34
|
+
it_behaves_like "都道府県が見つかる", code: 1
|
35
|
+
it_behaves_like "都道府県が見つからない", code: 99
|
36
|
+
it_behaves_like "都道府県が見つかる", code: "1"
|
37
|
+
it_behaves_like "都道府県が見つかる", code: "01"
|
38
|
+
it_behaves_like "都道府県が見つからない", code: "99"
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '都道府県名' do
|
42
|
+
it_behaves_like "都道府県が見つかる", name: "北海道"
|
43
|
+
it_behaves_like "都道府県が見つからない", name: "うどん県"
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '都道府県名(英語表記)' do
|
47
|
+
it_behaves_like "都道府県が見つかる", name: "Hokkaido"
|
48
|
+
it_behaves_like "都道府県が見つからない", name: "Udon"
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '都道府県名(英語表記-小文字)' do
|
52
|
+
it_behaves_like "都道府県が見つかる", name: "hokkaido"
|
53
|
+
it_behaves_like "都道府県が見つからない", name: "udon"
|
54
|
+
end
|
24
55
|
end
|
25
56
|
|
26
57
|
describe '.all' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jp_prefecture
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -130,4 +130,3 @@ test_files:
|
|
130
130
|
- spec/jp_prefecture_spec.rb
|
131
131
|
- spec/prefecture_spec.rb
|
132
132
|
- spec/spec_helper.rb
|
133
|
-
has_rdoc:
|