local_gov_code 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ class LocalGovCode
2
+ VERSION = "1.0.0"
3
+ end
@@ -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: []