jp_prefecture 0.11.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile DELETED
@@ -1,64 +0,0 @@
1
- #!/usr/bin/env rake
2
- # coding: utf-8
3
- require "bundler/gem_tasks"
4
-
5
- desc 'zip.yml を作成します'
6
- task :create_zips do
7
- require 'csv'
8
- require 'jp_prefecture'
9
-
10
- file_name = 'ken_all_utf8.csv'
11
-
12
- # download files
13
- `wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh`
14
- `lha x ken_all.lzh`
15
- `iconv -f sjis -t utf-8 ken_all.csv > #{file_name}`
16
- `rm ken_all.lzh`
17
- `rm ken_all.csv`
18
-
19
- zips = []
20
-
21
- # read CSV
22
- CSV.foreach(file_name, headers: false) { |line| zips << [line[2], line[6]] }
23
-
24
- # create sorted list of zips -> prefecture_code
25
- zips = zips
26
- .collect { |zip, prefecture| [zip.to_i, JpPrefecture::Prefecture.find(name: prefecture).code] }
27
- .sort{ |x, y| x[0] <=> y[0] }
28
-
29
- # prepare calculation
30
- ranged_zips = []
31
- current = [ zips.first[0], zips.first[0], zips.first[1] ]
32
-
33
- # calculate the zip ranges of each prefecture
34
- zips.each do |zip, code|
35
- if current[2] == code
36
- current[1] = zip
37
- else
38
- ranged_zips << current
39
- current = [zip, zip, code]
40
- end
41
- end
42
-
43
- # add last prefecture
44
- ranged_zips << current
45
-
46
- # create prefecture hash
47
- prefectures_to_zip = {}
48
-
49
- ranged_zips.each do |r0, r1, code|
50
- prefectures_to_zip[code] ||= []
51
- prefectures_to_zip[code] << [r0, r1]
52
- end
53
-
54
- prefectures_to_zip = Hash[*prefectures_to_zip.sort.flatten(1)]
55
-
56
- # save result
57
- File.open('data/zip.yml', 'w') do |file|
58
- file.write "# { prefecture_code: [[from_zip_1, to_zip_1], [from_zip_2, to_zip_2], ...], ... }\n"
59
- file.write prefectures_to_zip.to_yaml
60
- end
61
-
62
- # delete temporary file
63
- `rm #{file_name}`
64
- end
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 3.2.0"
6
- gem "sqlite3", "< 1.4"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.0.0"
6
- gem "sqlite3", "< 1.4"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.1.0"
6
- gem "sqlite3", "< 1.4"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.2.0"
6
- gem "sqlite3", "< 1.4"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.0.0"
6
- gem "sqlite3", "< 1.4"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.1.0"
6
- gem "sqlite3", "< 1.4"
7
-
8
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.2.0"
6
- gem "sqlite3", "< 1.4"
7
-
8
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 6.0.0"
6
-
7
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 6.1.0"
6
-
7
- gemspec path: "../"
@@ -1,26 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/jp_prefecture/version', __FILE__)
3
-
4
- Gem::Specification.new do |gem|
5
- gem.authors = ['chocoby']
6
- gem.email = ['chocoby@gmail.com']
7
- gem.summary = %q{Convert japan prefecture code into prefecture name}
8
- gem.description = %q{Convert japan prefecture code(JIS X 0402 based) into prefecture name.}
9
- gem.homepage = 'https://github.com/chocoby/jp_prefecture'
10
- gem.license = 'MIT'
11
-
12
- gem.files = `git ls-files`.split($\)
13
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
- gem.name = 'jp_prefecture'
16
- gem.require_paths = ['lib']
17
- gem.version = JpPrefecture::VERSION
18
-
19
- gem.add_development_dependency 'rake'
20
- gem.add_development_dependency 'rspec'
21
- gem.add_development_dependency 'activerecord', '>= 4.2.0'
22
- gem.add_development_dependency 'sqlite3'
23
- gem.add_development_dependency 'simplecov'
24
- gem.add_development_dependency 'simplecov-lcov'
25
- gem.add_development_dependency 'appraisal'
26
- end
data/spec/base_spec.rb DELETED
@@ -1,81 +0,0 @@
1
- # coding: utf-8
2
- require 'spec_helper'
3
-
4
- describe JpPrefecture::Base do
5
- describe '#jp_prefecture' do
6
- describe 'カラム名の指定について' do
7
- context 'prefecture_code を指定した場合' do
8
- let(:model_class) do
9
- klass = Class.new(ActiveRecord::Base) do
10
- self.table_name = :places
11
- include JpPrefecture
12
- jp_prefecture :prefecture_code
13
- end
14
-
15
- klass.new(prefecture_code: 1)
16
- end
17
-
18
- it 'prefecture_code のコードが変換できること' do
19
- expect(model_class.prefecture.name).to eq '北海道'
20
- end
21
- end
22
-
23
- context 'prefecture_id を指定した場合' do
24
- let(:model_class) do
25
- klass = Class.new(ActiveRecord::Base) do
26
- self.table_name = :places
27
- include JpPrefecture
28
- jp_prefecture :prefecture_id
29
- end
30
-
31
- klass.new(prefecture_id: 1)
32
- end
33
-
34
- it 'prefecture_id のコードが変換できること' do
35
- expect(model_class.prefecture.name).to eq '北海道'
36
- end
37
- end
38
- end
39
-
40
- describe '生成するメソッド名の指定について' do
41
- context 'prefecture_method を指定した場合' do
42
- let(:model_class) do
43
- klass = Class.new(ActiveRecord::Base) do
44
- self.table_name = :places
45
- include JpPrefecture
46
- jp_prefecture :prefecture_code, method_name: :prefecture_method
47
- end
48
-
49
- klass.new(prefecture_code: 1)
50
- end
51
-
52
- it 'prefecture_method で結果が参照できること' do
53
- expect(model_class.prefecture_method.name).to eq '北海道'
54
- end
55
- end
56
- end
57
-
58
- describe '都道府県の検索について' do
59
- let(:klass) do
60
- Class.new(ActiveRecord::Base) do
61
- self.table_name = :places
62
- include JpPrefecture
63
- jp_prefecture :prefecture_code
64
- end
65
- end
66
-
67
- context '都道府県が見つかった場合' do
68
- let(:model_class) { klass.new(prefecture_code: 1) }
69
- it { expect(model_class).to respond_to(:prefecture) }
70
- it { expect(model_class.prefecture).to be_an_instance_of(JpPrefecture::Prefecture) }
71
- it { expect(model_class.prefecture.name).to eq '北海道' }
72
- end
73
-
74
- context '都道府県が見つからなかった場合' do
75
- let(:model_class) { klass.new(prefecture_code: 99) }
76
- it { expect(model_class).to respond_to(:prefecture) }
77
- it { expect(model_class.prefecture).to be_nil }
78
- end
79
- end
80
- end
81
- end
data/spec/config_spec.rb DELETED
@@ -1,18 +0,0 @@
1
- # coding: utf-8
2
- require 'spec_helper'
3
-
4
- describe JpPrefecture::Config do
5
- describe '#mapping_data' do
6
- context 'カスタマイズされたprefecture.ymlを使うとき' do
7
- before do
8
- filepath = File.join(File.dirname(__FILE__), 'fixtures/prefecture.yml')
9
- @config = described_class.new
10
- @config.mapping_data = YAML.load_file filepath
11
- end
12
-
13
- it '都道府県+海外の数が48であること' do
14
- expect(@config.mapping_data.count).to eq 48
15
- end
16
- end
17
- end
18
- end
@@ -1,148 +0,0 @@
1
- # JIS X 0402 で定義されている都道府県コードと都道府県名をベースに
2
- # コードがゼロから始まるもの(09 など)を 1 ケタにし、
3
- # さらに、「海外」をcode: 48として追加したもの
4
- ---
5
- 1:
6
- :name: 北海道
7
- :name_e: hokkaido
8
- 2:
9
- :name: 青森県
10
- :name_e: aomori
11
- 3:
12
- :name: 岩手県
13
- :name_e: iwate
14
- 4:
15
- :name: 宮城県
16
- :name_e: miyagi
17
- 5:
18
- :name: 秋田県
19
- :name_e: akita
20
- 6:
21
- :name: 山形県
22
- :name_e: yamagata
23
- 7:
24
- :name: 福島県
25
- :name_e: fukushima
26
- 8:
27
- :name: 茨城県
28
- :name_e: ibaraki
29
- 9:
30
- :name: 栃木県
31
- :name_e: tochigi
32
- 10:
33
- :name: 群馬県
34
- :name_e: gunma
35
- 11:
36
- :name: 埼玉県
37
- :name_e: saitama
38
- 12:
39
- :name: 千葉県
40
- :name_e: chiba
41
- 13:
42
- :name: 東京都
43
- :name_e: tokyo
44
- 14:
45
- :name: 神奈川県
46
- :name_e: kanagawa
47
- 15:
48
- :name: 新潟県
49
- :name_e: niigata
50
- 16:
51
- :name: 富山県
52
- :name_e: toyama
53
- 17:
54
- :name: 石川県
55
- :name_e: ishikawa
56
- 18:
57
- :name: 福井県
58
- :name_e: fukui
59
- 19:
60
- :name: 山梨県
61
- :name_e: yamanashi
62
- 20:
63
- :name: 長野県
64
- :name_e: nagano
65
- 21:
66
- :name: 岐阜県
67
- :name_e: gifu
68
- 22:
69
- :name: 静岡県
70
- :name_e: shizuoka
71
- 23:
72
- :name: 愛知県
73
- :name_e: aichi
74
- 24:
75
- :name: 三重県
76
- :name_e: mie
77
- 25:
78
- :name: 滋賀県
79
- :name_e: shiga
80
- 26:
81
- :name: 京都府
82
- :name_e: kyoto
83
- 27:
84
- :name: 大阪府
85
- :name_e: osaka
86
- 28:
87
- :name: 兵庫県
88
- :name_e: hyogo
89
- 29:
90
- :name: 奈良県
91
- :name_e: nara
92
- 30:
93
- :name: 和歌山県
94
- :name_e: wakayama
95
- 31:
96
- :name: 鳥取県
97
- :name_e: tottori
98
- 32:
99
- :name: 島根県
100
- :name_e: shimane
101
- 33:
102
- :name: 岡山県
103
- :name_e: okayama
104
- 34:
105
- :name: 広島県
106
- :name_e: hiroshima
107
- 35:
108
- :name: 山口県
109
- :name_e: yamaguchi
110
- 36:
111
- :name: 徳島県
112
- :name_e: tokushima
113
- 37:
114
- :name: 香川県
115
- :name_e: kagawa
116
- 38:
117
- :name: 愛媛県
118
- :name_e: ehime
119
- 39:
120
- :name: 高知県
121
- :name_e: kochi
122
- 40:
123
- :name: 福岡県
124
- :name_e: fukuoka
125
- 41:
126
- :name: 佐賀県
127
- :name_e: saga
128
- 42:
129
- :name: 長崎県
130
- :name_e: nagasaki
131
- 43:
132
- :name: 熊本県
133
- :name_e: kumamoto
134
- 44:
135
- :name: 大分県
136
- :name_e: oita
137
- 45:
138
- :name: 宮崎県
139
- :name_e: miyazaki
140
- 46:
141
- :name: 鹿児島県
142
- :name_e: kagoshima
143
- 47:
144
- :name: 沖縄県
145
- :name_e: okinawa
146
- 48:
147
- :name: 海外
148
- :name_e: foreign_country
@@ -1,36 +0,0 @@
1
- # coding: utf-8
2
- require 'spec_helper'
3
-
4
- describe JpPrefecture do
5
- describe '.included' do
6
- subject do
7
- Class.new(ActiveRecord::Base) do
8
- include JpPrefecture
9
- end
10
- end
11
-
12
- it { is_expected.to respond_to(:jp_prefecture) }
13
- end
14
-
15
- describe 'include されていない' do
16
- subject { Class.new(ActiveRecord::Base) }
17
- it { is_expected.not_to respond_to(:jp_prefecture) }
18
- end
19
-
20
- describe '.setup' do
21
- before do
22
- filepath = File.join(File.dirname(__FILE__), 'fixtures/prefecture.yml')
23
- JpPrefecture.setup do |config|
24
- config.mapping_data = YAML.load_file filepath
25
- end
26
- end
27
-
28
- after do
29
- JpPrefecture.setup do |config|
30
- config.mapping_data = nil
31
- end
32
- end
33
-
34
- it { expect(JpPrefecture::Mapping.data.count).to eq 48 }
35
- end
36
- end
data/spec/mapping_spec.rb DELETED
@@ -1,10 +0,0 @@
1
- # coding: utf-8
2
- require 'spec_helper'
3
-
4
- describe JpPrefecture::Mapping do
5
- describe '.data' do
6
- it '都道府県の数が47であること' do
7
- expect(described_class.data.count).to eq 47
8
- end
9
- end
10
- end
@@ -1,175 +0,0 @@
1
- # coding: utf-8
2
- require 'spec_helper'
3
-
4
- describe JpPrefecture::Prefecture do
5
- describe '.build' do
6
- let(:pref) { JpPrefecture::Prefecture.build(1, '北海道', 'Hokkaido', 'ほっかいどう', 'ホッカイドウ', '北海道') }
7
- it { expect(pref.code).to eq 1 }
8
- it { expect(pref.name).to eq '北海道' }
9
- it { expect(pref.name_e).to eq 'Hokkaido' }
10
- it { expect(pref.name_h).to eq 'ほっかいどう' }
11
- it { expect(pref.name_k).to eq 'ホッカイドウ' }
12
- it { expect(pref.zips).to eq [10000..70895, 400000..996509] }
13
- it { expect(pref.area).to eq '北海道' }
14
- it { expect(pref.type).to eq '道' }
15
-
16
- let(:nil_type_pref) { JpPrefecture::Prefecture.build(13, '東京', 'Tokyo', 'とうきょう', 'トウキョウ', '関東') }
17
- it { expect(nil_type_pref.code).to eq 13 }
18
- it { expect(nil_type_pref.name).to eq '東京' }
19
- it { expect(nil_type_pref.name_e).to eq 'Tokyo' }
20
- it { expect(nil_type_pref.name_h).to eq 'とうきょう' }
21
- it { expect(nil_type_pref.name_k).to eq 'トウキョウ' }
22
- it { expect(nil_type_pref.zips).to eq [1000000..2080035] }
23
- it { expect(nil_type_pref.area).to eq '関東' }
24
- it { expect(nil_type_pref.type).to eq nil }
25
- end
26
-
27
- describe '.find' do
28
- describe '検索結果について' do
29
- shared_examples "都道府県が見つかる" do |arg|
30
- let(:pref) { JpPrefecture::Prefecture.find(arg) }
31
- it { expect(pref.code).to eq 1 }
32
- it { expect(pref.name).to eq '北海道' }
33
- it { expect(pref.name_e).to eq 'Hokkaido' }
34
- it { expect(pref.name_h).to eq 'ほっかいどう' }
35
- it { expect(pref.name_k).to eq 'ホッカイドウ' }
36
- it { expect(pref.zips).to eq [10000..70895, 400000..996509] }
37
- it { expect(pref.area).to eq '北海道' }
38
- it { expect(pref.type).to eq '道' }
39
- end
40
-
41
- shared_examples '都道府県が見つからない' do |arg|
42
- let(:pref) { JpPrefecture::Prefecture.find(arg) }
43
- it { expect(pref).to be_nil }
44
- end
45
-
46
- describe '都道府県コード' do
47
- it_behaves_like "都道府県が見つかる", 1
48
- it_behaves_like "都道府県が見つからない", 99
49
- it_behaves_like "都道府県が見つかる", "1"
50
- it_behaves_like "都道府県が見つかる", "01"
51
- it_behaves_like "都道府県が見つからない", "99"
52
- end
53
-
54
- describe '都道府県コード(キーワード引数)' do
55
- it_behaves_like "都道府県が見つかる", code: 1
56
- it_behaves_like "都道府県が見つからない", code: 99
57
- it_behaves_like "都道府県が見つかる", code: "1"
58
- it_behaves_like "都道府県が見つかる", code: "01"
59
- it_behaves_like "都道府県が見つからない", code: "99"
60
- end
61
-
62
- describe '都道府県名' do
63
- it_behaves_like "都道府県が見つかる", name: "北海道"
64
- it_behaves_like "都道府県が見つからない", name: "うどん県"
65
- end
66
-
67
- describe '都道府県名(英語表記)' do
68
- it_behaves_like "都道府県が見つかる", name: "Hokkaido"
69
- it_behaves_like "都道府県が見つからない", name: "Udon"
70
- end
71
-
72
- describe '都道府県名(英語表記-小文字)' do
73
- it_behaves_like "都道府県が見つかる", name: "hokkaido"
74
- it_behaves_like "都道府県が見つからない", name: "udon"
75
- end
76
-
77
- describe '都道府県名(ひらがな表記)' do
78
- it_behaves_like "都道府県が見つかる", name: "ほっかいどう"
79
- it_behaves_like "都道府県が見つからない", name: "うどん"
80
- end
81
-
82
- describe '都道府県名(カタカナ表記)' do
83
- it_behaves_like "都道府県が見つかる", name: "ホッカイドウ"
84
- it_behaves_like "都道府県が見つからない", name: "ウドン"
85
- end
86
-
87
- describe '都道府県名(前方一致)' do
88
- let(:pref) { JpPrefecture::Prefecture.find(name: '東京') }
89
- it { expect(pref.name).to eq '東京都' }
90
-
91
- let(:pref2) { JpPrefecture::Prefecture.find(name: '京都') }
92
- it { expect(pref2.name).to eq '京都府' }
93
-
94
- context 'マッチする都道府県が複数あった場合' do
95
- let(:pref) { JpPrefecture::Prefecture.find(name: '宮') }
96
- it { expect(pref.name).to eq '宮城県' }
97
- end
98
-
99
- context 'マッチする都道府県が複数あった場合(英語表記)' do
100
- let(:pref) { JpPrefecture::Prefecture.find(name: 'miya') }
101
- it { expect(pref.name_e).to eq 'Miyagi' }
102
-
103
- let(:pref2) { JpPrefecture::Prefecture.find(name: 'Miya') }
104
- it { expect(pref2.name_e).to eq 'Miyagi' }
105
- end
106
-
107
- context 'マッチする都道府県が複数あった場合(ひらがな表記)' do
108
- let(:pref) { JpPrefecture::Prefecture.find(name: 'みや') }
109
- it { expect(pref.name_h).to eq 'みやぎけん' }
110
- end
111
-
112
- context 'マッチする都道府県が複数あった場合(カタカナ表記)' do
113
- let(:pref) { JpPrefecture::Prefecture.find(name: 'ミヤ') }
114
- it { expect(pref.name_k).to eq 'ミヤギケン' }
115
- end
116
- end
117
- end
118
-
119
- describe '渡した変数について' do
120
- context 'string の場合' do
121
- it '値が変更されないこと' do
122
- code = '1'
123
- JpPrefecture::Prefecture.find(code)
124
- expect(code).to eq '1'
125
- end
126
- end
127
-
128
- context 'code が string の場合' do
129
- it '値が変更されないこと' do
130
- code = '1'
131
- JpPrefecture::Prefecture.find(code: code)
132
- expect(code).to eq '1'
133
- end
134
- end
135
-
136
- context 'name の場合' do
137
- it '値が変更されないこと' do
138
- name = 'hokkaido'
139
- JpPrefecture::Prefecture.find(name: name)
140
- expect(name).to eq 'hokkaido'
141
- end
142
-
143
- context '空の文字列が与えられた場合' do
144
- it 'nilを返すこと' do
145
- actual = JpPrefecture::Prefecture.find(name: '')
146
- expect(actual).to be_nil
147
- end
148
- end
149
-
150
- context 'nilが与えられた場合' do
151
- it 'nilを返すこと' do
152
- actual = JpPrefecture::Prefecture.find(name: nil)
153
- expect(actual).to be_nil
154
- end
155
- end
156
- end
157
-
158
- context 'zip の場合' do
159
- it '値が変更されないこと' do
160
- zip = '9999999'
161
- JpPrefecture::Prefecture.find(zip: zip)
162
- expect(zip).to eq '9999999'
163
- end
164
- end
165
- end
166
- end
167
-
168
- describe '.all' do
169
- let(:prefs) { JpPrefecture::Prefecture.all }
170
- it { expect(prefs.first).to be_an_instance_of(JpPrefecture::Prefecture) }
171
- it '都道府県の数が 47 であること' do
172
- expect(prefs.count).to eq 47
173
- end
174
- end
175
- end
data/spec/spec_helper.rb DELETED
@@ -1,41 +0,0 @@
1
- # coding: utf-8
2
- if ENV['CI']
3
- require 'simplecov'
4
- require 'simplecov-lcov'
5
- SimpleCov::Formatter::LcovFormatter.config do |c|
6
- c.report_with_single_file = true
7
- c.single_report_path = "coverage/lcov.info"
8
- end
9
- SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
10
- SimpleCov.start
11
- end
12
-
13
- require "jp_prefecture"
14
- require "active_record"
15
-
16
- RSpec.configure do |config|
17
- config.before(:suite) do
18
- setup_db
19
- end
20
-
21
- config.after(:suite) do
22
- teardown_db
23
- end
24
- end
25
-
26
- def setup_db
27
- ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
28
-
29
- ActiveRecord::Schema.define(version: 1) do
30
- create_table :places do |t|
31
- t.integer :prefecture_code
32
- t.integer :prefecture_id
33
- end
34
- end
35
- end
36
-
37
- def teardown_db
38
- ActiveRecord::Base.connection.tables.each do |table|
39
- ActiveRecord::Base.connection.drop_table(table)
40
- end
41
- end