chinese_cities 0.0.1 → 0.0.3
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.
- data/README.md +28 -8
- data/lib/chinese_cities/city.rb +37 -16
- data/lib/chinese_cities/database.rb +3433 -643
- data/lib/chinese_cities/province.rb +24 -19
- data/lib/chinese_cities/region.rb +54 -0
- data/lib/chinese_cities/version.rb +1 -1
- data/lib/chinese_cities.rb +12 -16
- data/spec/chinese_cities/city_spec.rb +37 -4
- data/spec/chinese_cities/province_spec.rb +16 -4
- data/spec/chinese_cities/region_spec.rb +78 -0
- metadata +6 -3
@@ -1,42 +1,47 @@
|
|
1
1
|
module ChineseCities
|
2
2
|
class Province
|
3
|
-
attr_accessor :name
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
@
|
3
|
+
attr_accessor :id, :name
|
4
|
+
|
5
|
+
def initialize(province)
|
6
|
+
@id = province[:id]
|
7
|
+
@name = province[:name]
|
7
8
|
end
|
8
9
|
|
9
10
|
def cities
|
10
|
-
|
11
|
-
City.find city
|
12
|
-
end
|
11
|
+
City.find_by_province_id(id)
|
13
12
|
end
|
14
13
|
|
15
14
|
def city_names
|
16
|
-
|
17
|
-
province.first == name
|
18
|
-
end.last
|
15
|
+
cities.map(&:name)
|
19
16
|
end
|
20
17
|
|
21
18
|
class << self
|
22
19
|
|
23
20
|
private :new
|
24
21
|
|
25
|
-
def
|
26
|
-
|
27
|
-
|
22
|
+
def search(name)
|
23
|
+
provinces = PROVINCES.select { |province| province[:name] =~ /#{name}/ }
|
24
|
+
provinces.map do |province|
|
25
|
+
new(province)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def find(id)
|
30
|
+
province = PROVINCES.find { |province| province[:id] == id }
|
31
|
+
new(province) unless province.nil?
|
32
|
+
end
|
33
|
+
|
34
|
+
def where(name)
|
35
|
+
province = PROVINCES.find { |province| province[:name] == name }
|
36
|
+
new(province) if province
|
28
37
|
end
|
29
38
|
|
30
39
|
def all_names
|
31
|
-
|
32
|
-
province.first
|
33
|
-
end
|
40
|
+
PROVINCES.map { |province| province[:name] }
|
34
41
|
end
|
35
42
|
|
36
43
|
def all
|
37
|
-
|
38
|
-
new province
|
39
|
-
end
|
44
|
+
PROVINCES.map { |province| new(province) }
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module ChineseCities
|
2
|
+
class Region
|
3
|
+
attr_accessor :id, :name, :city_id
|
4
|
+
|
5
|
+
def initialize(region)
|
6
|
+
@id = region[:id]
|
7
|
+
@city_id = region[:city_id]
|
8
|
+
@name = region[:name]
|
9
|
+
end
|
10
|
+
|
11
|
+
def city
|
12
|
+
City.find(city_id)
|
13
|
+
end
|
14
|
+
|
15
|
+
def city_name
|
16
|
+
city.name
|
17
|
+
end
|
18
|
+
|
19
|
+
class << self
|
20
|
+
private :new
|
21
|
+
|
22
|
+
def search(name)
|
23
|
+
regions = REGIONS.select { |region| region[:name] =~ /#{name}/ }
|
24
|
+
regions.map do |region|
|
25
|
+
new(region)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def find_by_city_id(city_id)
|
30
|
+
regions = REGIONS.select { |region| region[:city_id] == city_id }
|
31
|
+
regions.map { |region| new(region) }
|
32
|
+
end
|
33
|
+
|
34
|
+
def find(id)
|
35
|
+
region = REGIONS.find { |region| region[:id] == id }
|
36
|
+
new(region) unless region.nil?
|
37
|
+
end
|
38
|
+
|
39
|
+
def where(name)
|
40
|
+
regions = REGIONS.select { |region| region[:name] == name }
|
41
|
+
regions.map { |region| new(region) } unless regions.empty?
|
42
|
+
end
|
43
|
+
|
44
|
+
def all_names
|
45
|
+
REGIONS.map { |region| region[:name] }
|
46
|
+
end
|
47
|
+
|
48
|
+
def all
|
49
|
+
REGIONS.map { |region| new(region) }
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/chinese_cities.rb
CHANGED
@@ -1,24 +1,20 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require "chinese_cities/version"
|
2
|
+
require "chinese_cities/database"
|
4
3
|
|
5
4
|
module ChineseCities
|
6
|
-
autoload :DATABASE, 'chinese_cities/database'
|
7
5
|
autoload :Province, 'chinese_cities/province'
|
8
|
-
autoload :City,
|
6
|
+
autoload :City, 'chinese_cities/city'
|
7
|
+
autoload :Region, 'chinese_cities/region'
|
9
8
|
|
10
|
-
def self.search
|
11
|
-
|
9
|
+
def self.search(name)
|
10
|
+
provinces = Province.search(name)
|
11
|
+
cities = City.search(name)
|
12
|
+
regions = Region.search(name)
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
city.include? name
|
19
|
-
end
|
20
|
-
|
21
|
-
hash
|
14
|
+
{
|
15
|
+
provinces: provinces,
|
16
|
+
cities: cities,
|
17
|
+
regions: regions
|
18
|
+
}
|
22
19
|
end
|
23
|
-
|
24
20
|
end
|
@@ -7,7 +7,7 @@ module ChineseCities
|
|
7
7
|
|
8
8
|
describe City do
|
9
9
|
before :all do
|
10
|
-
@city = City.find
|
10
|
+
@city = City.find(1)
|
11
11
|
end
|
12
12
|
|
13
13
|
context '#province' do
|
@@ -24,20 +24,34 @@ module ChineseCities
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
context '#regions' do
|
28
|
+
it 'should have regions' do
|
29
|
+
result = @city.regions
|
30
|
+
result.should_not be_empty
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context '#region_name' do
|
35
|
+
it 'should have result_names' do
|
36
|
+
result = @city.region_names
|
37
|
+
result.should_not be_empty
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
27
41
|
context '.new' do
|
28
42
|
it 'should be a private method' do
|
29
|
-
lambda { City.new
|
43
|
+
lambda { City.new(CITIES.first)}.should raise_error
|
30
44
|
end
|
31
45
|
end
|
32
46
|
|
33
47
|
context '.find' do
|
34
48
|
it 'should find a city' do
|
35
|
-
result = City.find
|
49
|
+
result = City.find(1)
|
36
50
|
result.should_not be_nil
|
37
51
|
end
|
38
52
|
|
39
53
|
it 'should not find a city' do
|
40
|
-
result = City.find
|
54
|
+
result = City.find(0)
|
41
55
|
result.should be_nil
|
42
56
|
end
|
43
57
|
end
|
@@ -56,5 +70,24 @@ module ChineseCities
|
|
56
70
|
end
|
57
71
|
end
|
58
72
|
|
73
|
+
context '.where' do
|
74
|
+
it 'should get some cities' do
|
75
|
+
result = City.where('北京市')
|
76
|
+
result.should_not be_empty
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should not get city' do
|
80
|
+
result = City.where('哈哈')
|
81
|
+
result.should be_nil
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context '.find_by_province_id' do
|
86
|
+
it 'should find by province_id' do
|
87
|
+
result = City.find_by_province_id(1)
|
88
|
+
result.should_not be_empty
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
59
92
|
end
|
60
93
|
end
|
@@ -7,7 +7,7 @@ module ChineseCities
|
|
7
7
|
|
8
8
|
describe Province do
|
9
9
|
before :all do
|
10
|
-
@province = Province.find
|
10
|
+
@province = Province.find(1)
|
11
11
|
end
|
12
12
|
|
13
13
|
context '#cities' do
|
@@ -26,18 +26,18 @@ module ChineseCities
|
|
26
26
|
|
27
27
|
context '.new' do
|
28
28
|
it 'should be a private method' do
|
29
|
-
lambda { Province.new
|
29
|
+
lambda { Province.new(PROVINCES.first) }.should raise_error
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
context '.find' do
|
34
34
|
it 'should find a province' do
|
35
|
-
result = Province.find
|
35
|
+
result = Province.find(1)
|
36
36
|
result.should_not be_nil
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'should not find a province' do
|
40
|
-
result = Province.find
|
40
|
+
result = Province.find(0)
|
41
41
|
result.should be_nil
|
42
42
|
end
|
43
43
|
end
|
@@ -56,5 +56,17 @@ module ChineseCities
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
context '.where' do
|
60
|
+
it 'should get a province' do
|
61
|
+
result = Province.where('北京市')
|
62
|
+
result.should_not nil
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should not get any province' do
|
66
|
+
result = Province.where('哈哈')
|
67
|
+
result.should nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
59
71
|
end
|
60
72
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rspec'
|
4
|
+
require 'chinese_cities/region'
|
5
|
+
|
6
|
+
module ChineseCities
|
7
|
+
describe Region do
|
8
|
+
before :all do
|
9
|
+
@region = Region.find(1)
|
10
|
+
end
|
11
|
+
|
12
|
+
context '#city' do
|
13
|
+
it 'should have city' do
|
14
|
+
result = @region.city
|
15
|
+
result.should_not be_nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context '#city_name' do
|
20
|
+
it 'should have city_name' do
|
21
|
+
result = @region.city_name
|
22
|
+
result.should_not be_nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context '.new' do
|
27
|
+
it 'should be a private method' do
|
28
|
+
lambda { Region.new(REGIONS)}.should raise_error
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context '.find' do
|
33
|
+
it 'should find a region' do
|
34
|
+
result = Region.find(1)
|
35
|
+
result.should_not be_nil
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should not find a region' do
|
39
|
+
result = Region.find(0)
|
40
|
+
result.should be_nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context '.all' do
|
45
|
+
it 'should get all region' do
|
46
|
+
result = Region.all
|
47
|
+
result.should_not be_empty
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context '.all_names' do
|
52
|
+
it 'should get all region names' do
|
53
|
+
result = Region.all_names
|
54
|
+
result.should_not be_empty
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context '.where' do
|
59
|
+
it 'should get some region' do
|
60
|
+
result = Region.where('东城区')
|
61
|
+
result.should_not be_empty
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should not get region' do
|
65
|
+
result = Region.where('哈哈')
|
66
|
+
result.should be_nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context '.find_by_city_id' do
|
71
|
+
it 'should find by city_id' do
|
72
|
+
result = Region.find_by_city_id(1)
|
73
|
+
result.should_not be_empty
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chinese_cities
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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:
|
12
|
+
date: 2013-05-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -44,9 +44,11 @@ files:
|
|
44
44
|
- lib/chinese_cities/city.rb
|
45
45
|
- lib/chinese_cities/database.rb
|
46
46
|
- lib/chinese_cities/province.rb
|
47
|
+
- lib/chinese_cities/region.rb
|
47
48
|
- lib/chinese_cities/version.rb
|
48
49
|
- spec/chinese_cities/city_spec.rb
|
49
50
|
- spec/chinese_cities/province_spec.rb
|
51
|
+
- spec/chinese_cities/region_spec.rb
|
50
52
|
- spec/chinese_cities_spec.rb
|
51
53
|
homepage: https://github.com/zhouguangming/chinese_cities
|
52
54
|
licenses: []
|
@@ -68,11 +70,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
70
|
version: '0'
|
69
71
|
requirements: []
|
70
72
|
rubyforge_project:
|
71
|
-
rubygems_version: 1.8.
|
73
|
+
rubygems_version: 1.8.25
|
72
74
|
signing_key:
|
73
75
|
specification_version: 3
|
74
76
|
summary: Chinese provinces and cities collection
|
75
77
|
test_files:
|
76
78
|
- spec/chinese_cities/city_spec.rb
|
77
79
|
- spec/chinese_cities/province_spec.rb
|
80
|
+
- spec/chinese_cities/region_spec.rb
|
78
81
|
- spec/chinese_cities_spec.rb
|