local_gov_code 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +105 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/local_gov_code/local_gov_data.rb +1974 -0
- data/lib/local_gov_code/version.rb +3 -0
- data/lib/local_gov_code.rb +112 -0
- data/local_gov_code.gemspec +25 -0
- metadata +98 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'singleton'
|
4
|
+
require "local_gov_code/version"
|
5
|
+
require "local_gov_code/local_gov_data"
|
6
|
+
|
7
|
+
class LocalGovCode
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@code_hash = {}
|
12
|
+
@fullname_hash = {}
|
13
|
+
@name_hash = {}
|
14
|
+
|
15
|
+
data.each do |lg|
|
16
|
+
local_gov = LocalGov.new(*lg)
|
17
|
+
@code_hash[local_gov.code.to_i] = local_gov
|
18
|
+
|
19
|
+
@fullname_hash[local_gov.name] = [] if @fullname_hash[local_gov.name].nil?
|
20
|
+
@fullname_hash[local_gov.name] << local_gov
|
21
|
+
|
22
|
+
@name_hash[local_gov.name] = [] if @name_hash[local_gov.name].nil?
|
23
|
+
@name_hash[local_gov.name] << local_gov
|
24
|
+
end
|
25
|
+
|
26
|
+
@code_hash.freeze
|
27
|
+
@fullname_hash.freeze
|
28
|
+
@name_hash.freeze
|
29
|
+
end
|
30
|
+
|
31
|
+
# 5桁の地方公共団体コードに該当するLocalGovオブジェクトを返す
|
32
|
+
# コードは文字列でも整数でも可。
|
33
|
+
# 例)北海道 '01000' or 1000
|
34
|
+
def find(code)
|
35
|
+
@code_hash[code.to_i]
|
36
|
+
end
|
37
|
+
|
38
|
+
# 都道府県+市区町村名で検索
|
39
|
+
def find_by_fullname(fullname)
|
40
|
+
@fullname_hash[fullname]
|
41
|
+
end
|
42
|
+
|
43
|
+
# 市区町村名で検索
|
44
|
+
def find_by_name(name)
|
45
|
+
@name_hash[name]
|
46
|
+
end
|
47
|
+
|
48
|
+
# すべてのLocalGovの配列を返す。順番は地方自治体コード順。
|
49
|
+
def all
|
50
|
+
@code_hash.sort.collect { |lg| lg.last }
|
51
|
+
end
|
52
|
+
|
53
|
+
#--------------------------------------------------------------------
|
54
|
+
|
55
|
+
#
|
56
|
+
# 各地方公共団体を扱うクラス
|
57
|
+
#
|
58
|
+
class LocalGov
|
59
|
+
attr_reader :prefname, :name, :prefkana, :kana
|
60
|
+
|
61
|
+
def initialize(code, prefname, name, prefkana, kana)
|
62
|
+
@code = code.to_i / 10 # 6桁目チェックコードは除く
|
63
|
+
@checksum = code.to_i % 10
|
64
|
+
@prefname = prefname
|
65
|
+
@name = name
|
66
|
+
@prefkana = prefkana
|
67
|
+
@kana = kana
|
68
|
+
end
|
69
|
+
|
70
|
+
def code
|
71
|
+
sprintf("%05d", @code)
|
72
|
+
end
|
73
|
+
|
74
|
+
def fullname
|
75
|
+
"#{prefname}#{name}"
|
76
|
+
end
|
77
|
+
|
78
|
+
# テスト用
|
79
|
+
def check_ok?
|
80
|
+
@checksum == checksum
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
# 全国地方公共団体コード仕様(平成19年4月1日総務省)
|
86
|
+
# 11.検査数字
|
87
|
+
# 全国地方公共団体コードにおける検査数字は、電算処理にあたって、不
|
88
|
+
# 正なコードが使われないよう第6桁目をチェック用としたもので、次の方
|
89
|
+
# 式により算出した数字とする。 (方式)第1桁から第5桁までの数字に、そ
|
90
|
+
# れぞれ6.5.4.3.2を乗じて算出した積の和を求め、その和を11で除し、商
|
91
|
+
# と剰余(以下「余り数字」という。)を求めて、11と余り数字との差の下
|
92
|
+
# 1桁の数字を検査数字とする。 ただし、積の和が11より小なるときは、
|
93
|
+
# 検査数字は、11から積の和を控除した数字とする。
|
94
|
+
#
|
95
|
+
def checksum
|
96
|
+
c = @code
|
97
|
+
c, n5 = c.divmod(10)
|
98
|
+
c, n4 = c.divmod(10)
|
99
|
+
c, n3 = c.divmod(10)
|
100
|
+
c, n2 = c.divmod(10)
|
101
|
+
c, n1 = c.divmod(10)
|
102
|
+
|
103
|
+
sum = n1*6 + n2*5 + n3*4 + n4*3 + n5*2
|
104
|
+
if sum < 11
|
105
|
+
11 - sum
|
106
|
+
else
|
107
|
+
q =sum.modulo(11)
|
108
|
+
(11 - q).modulo(10)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'local_gov_code/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "local_gov_code"
|
8
|
+
spec.version = LocalGovCode::VERSION
|
9
|
+
spec.authors = ["Hideo NAKAMURA"]
|
10
|
+
spec.email = ["cxn03651@msj.biglobe.ne.jp"]
|
11
|
+
|
12
|
+
spec.summary = %q{全国地方公共団体コードを取り扱うgemです。平成26年4月5日現在データによります。}
|
13
|
+
spec.description = %q{全国地方公共団体コードを取り扱うgemです。平成26年4月5日現在データによります。}
|
14
|
+
spec.homepage = ""
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
23
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: local_gov_code
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hideo NAKAMURA
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.12'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
description: 全国地方公共団体コードを取り扱うgemです。平成26年4月5日現在データによります。
|
56
|
+
email:
|
57
|
+
- cxn03651@msj.biglobe.ne.jp
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".travis.yml"
|
64
|
+
- Gemfile
|
65
|
+
- LICENSE.txt
|
66
|
+
- README.md
|
67
|
+
- Rakefile
|
68
|
+
- bin/console
|
69
|
+
- bin/setup
|
70
|
+
- lib/local_gov_code.rb
|
71
|
+
- lib/local_gov_code/local_gov_data.rb
|
72
|
+
- lib/local_gov_code/version.rb
|
73
|
+
- local_gov_code.gemspec
|
74
|
+
homepage: ''
|
75
|
+
licenses:
|
76
|
+
- MIT
|
77
|
+
metadata: {}
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
requirements: []
|
93
|
+
rubyforge_project:
|
94
|
+
rubygems_version: 2.5.1
|
95
|
+
signing_key:
|
96
|
+
specification_version: 4
|
97
|
+
summary: 全国地方公共団体コードを取り扱うgemです。平成26年4月5日現在データによります。
|
98
|
+
test_files: []
|