id_validator 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +21 -0
- data/README.md +3 -2
- data/lib/id_validator/concern/helper.rb +20 -23
- data/lib/id_validator/config.rb +11718 -6677
- data/lib/id_validator/version.rb +1 -1
- metadata +3 -3
- data/.idea/vcs.xml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bd01142bac23a42e104f98cbbbd5f863b187cc2eedcf0a63df79bbb43ea2d78
|
4
|
+
data.tar.gz: 793d358b5a92c519c137f798870b67fc904cb9ae33384ee432097a879c939e76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c876bffcf541eed5c9cedcae239cb9c9d3b31f92af697754ce78e7d1cf23c416cbb634d45d62b2103183ac16f239f491519956350bcb7ef2d28cfc3a5dffa84
|
7
|
+
data.tar.gz: dd5a98ed7ed655d159cef97f1295db5e6991522ad039b53ef8f0b9dfd615766a040b0d2cbd6da0e31fa940eb603cd58494fc6fbde40a40dc664e72b991f97001
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2018 renyijiu
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
[![Build Status](https://travis-ci.com/renyijiu/id_validator.svg?branch=master)](https://travis-ci.com/renyijiu/id_validator)
|
2
|
-
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/id_validator.svg)](https://badge.fury.io/rb/id_validator)
|
3
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/c12676a3c0261956e06c/maintainability)](https://codeclimate.com/github/renyijiu/id_validator/maintainability)
|
3
4
|
|
4
5
|
# IdValidator
|
5
6
|
|
@@ -105,7 +106,7 @@ IdValidator.upgrade_id('610104620927690')
|
|
105
106
|
|
106
107
|
- [中华人民共和国民政部:行政区划代码](http://www.mca.gov.cn/article/sj/xzqh/)
|
107
108
|
|
108
|
-
- [中华人民共和国行政区划代码历史数据集](https://github.com/
|
109
|
+
- [中华人民共和国行政区划代码历史数据集](https://github.com/renyijiu/address-code-of-china)
|
109
110
|
|
110
111
|
- [国务院办公厅关于印发《港澳台居民居住证申领发放办法》的通知](http://www.gov.cn/zhengce/content/2018-08/19/content_5314865.htm)
|
111
112
|
|
@@ -26,7 +26,7 @@ module IdValidator
|
|
26
26
|
|
27
27
|
# 随意获取一个符合要求的地址码
|
28
28
|
def get_random_address_code(reg)
|
29
|
-
keys = IdValidator::Config.
|
29
|
+
keys = IdValidator::Config.latest_address_info.keys.shuffle
|
30
30
|
|
31
31
|
keys.find { |key| key.to_s =~ reg }.to_s
|
32
32
|
end
|
@@ -51,6 +51,15 @@ module IdValidator
|
|
51
51
|
def get_random_birthday_code
|
52
52
|
Time.at(rand * Time.now.to_i).strftime('%Y%m%d')
|
53
53
|
end
|
54
|
+
|
55
|
+
# 获取指定区划代码最新的地址名称
|
56
|
+
def get_address_info(address_code)
|
57
|
+
address_code = address_code.to_i
|
58
|
+
address_arr = IdValidator::Config.total_address_info.fetch(address_code, [])
|
59
|
+
|
60
|
+
address = address_arr.sort_by{|a| a[:end_year]}.last || {}
|
61
|
+
address.fetch(:address, nil)
|
62
|
+
end
|
54
63
|
end
|
55
64
|
|
56
65
|
module Helper
|
@@ -81,26 +90,15 @@ module IdValidator
|
|
81
90
|
|
82
91
|
# 获取地址信息
|
83
92
|
def get_address_info(address_code)
|
84
|
-
|
85
|
-
|
93
|
+
province_address_code = "#{address_code[0...2]}0000"
|
94
|
+
city_address_code = "#{address_code[0...4]}00"
|
86
95
|
|
87
|
-
|
88
|
-
city_address_code = "#{address_code[0...4]}00".to_i
|
89
|
-
|
90
|
-
province = address_code_hash[province_address_code] || abandoned_address_code_hash[province_address_code]
|
91
|
-
|
92
|
-
if address_code[0].to_i != 8
|
93
|
-
city = address_code_hash[city_address_code] || abandoned_address_code_hash[city_address_code]
|
94
|
-
district = address_code_hash[address_code.to_i] ||abandoned_address_code_hash[address_code.to_i]
|
95
|
-
else
|
96
|
-
city = nil
|
97
|
-
district = nil
|
98
|
-
end
|
96
|
+
is_mainland = (address_code[0].to_i != 8)
|
99
97
|
|
100
98
|
{
|
101
|
-
province:
|
102
|
-
city:
|
103
|
-
district:
|
99
|
+
province: Func.get_address_info(province_address_code),
|
100
|
+
city: is_mainland ? Func.get_address_info(city_address_code) : nil,
|
101
|
+
district: is_mainland ? Func.get_address_info(address_code) : nil
|
104
102
|
}
|
105
103
|
end
|
106
104
|
|
@@ -154,9 +152,9 @@ module IdValidator
|
|
154
152
|
|
155
153
|
# 检查是否已经废弃
|
156
154
|
def check_is_abandoned(address_code)
|
157
|
-
address = IdValidator::Config.
|
155
|
+
address = IdValidator::Config.latest_address_info.fetch(address_code.to_i, nil)
|
158
156
|
|
159
|
-
|
157
|
+
address.nil?
|
160
158
|
end
|
161
159
|
|
162
160
|
# 生成校验码
|
@@ -174,7 +172,7 @@ module IdValidator
|
|
174
172
|
|
175
173
|
# 生成地址码
|
176
174
|
def generate_address_code(address)
|
177
|
-
key = IdValidator::Config.
|
175
|
+
key = IdValidator::Config.latest_address_info.key(address).to_s
|
178
176
|
|
179
177
|
case
|
180
178
|
when key.empty?
|
@@ -218,8 +216,7 @@ module IdValidator
|
|
218
216
|
def generate_order_code(sex)
|
219
217
|
order_code = rand(1..999)
|
220
218
|
|
221
|
-
order_code
|
222
|
-
order_code = order_code % 2 == 0 ? order_code - 1 : order_code if sex == 1
|
219
|
+
order_code -= 1 if sex != (order_code % 2)
|
223
220
|
|
224
221
|
Func.get_str_pad(order_code, 3, '0', false)
|
225
222
|
end
|