chinese_cities 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/README.md
CHANGED
@@ -19,8 +19,8 @@ Or install it yourself as:
|
|
19
19
|
## Usage
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
province = ChineseCities::Province.
|
23
|
-
=> <#ChineseCities::Province:0xa612128 @name="北京市">
|
22
|
+
province = ChineseCities::Province.where '北京市'
|
23
|
+
=> <#ChineseCities::Province:0xa612128 @name="北京市">
|
24
24
|
|
25
25
|
province.name
|
26
26
|
=> '北京市'
|
@@ -71,10 +71,10 @@ ChineseCities::Province.all
|
|
71
71
|
ChineseCities::Province.all_names
|
72
72
|
=> [ An array of all province names ]
|
73
73
|
|
74
|
-
|
75
|
-
=> #<ChineseCities::City:0xac40464 @name="西城区">
|
74
|
+
cities = ChineseCities::Cities.where '西城区'
|
75
|
+
=> [#<ChineseCities::City:0xac40464 @name="西城区">]
|
76
76
|
|
77
|
-
|
77
|
+
cities.first.province
|
78
78
|
=> #<ChineseCities::Province:0xaf27808 @name="北京市"
|
79
79
|
|
80
80
|
city.province_name
|
@@ -86,14 +86,34 @@ ChineseCities::City.all
|
|
86
86
|
ChineseCities::City.all_names
|
87
87
|
=> [ An array of all cities names ]
|
88
88
|
|
89
|
-
|
90
|
-
ChineseCities
|
91
|
-
|
89
|
+
regions = ChineseCities::Region.where('浦东区')
|
90
|
+
=> [#<ChineseCities::Region:0x89bdb6c @id=726, @city_id=73, @name="浦东新区">]
|
91
|
+
|
92
|
+
regions.first.city
|
93
|
+
=> #<ChineseCities::City:0x89bb308 @id=73, @province_id=9, @name="黄浦区">
|
94
|
+
|
95
|
+
ChineseCities::Region.all
|
96
|
+
=> [ An array of all regions objects ]
|
97
|
+
|
98
|
+
ChineseCities::Region.all_names
|
99
|
+
=> [ An array of all regions names ]
|
100
|
+
|
101
|
+
# Search provinces, cities, regions which name like your parameter
|
102
|
+
ChineseCities.search('京')
|
103
|
+
=> {
|
104
|
+
:provinces=>[#<ChineseCities::Province:0x9fee120 @id=1, @name="北京市">],
|
105
|
+
:cities=>[#<ChineseCities::City:0xa040b78 @id=1, @province_id=1, @name="北京市">, #<ChineseCities::City:0xa040b64 @id=74, @province_id=10, @name="南京市">],
|
106
|
+
:regions=>[#<ChineseCities::Region:0x9a55588 @id=817, @city_id=84, @name="京口区">, #<ChineseCities::Region:0x9a55574 @id=1567, @city_id=175, @name="京山县">]
|
107
|
+
}
|
92
108
|
|
93
109
|
|
94
110
|
|
95
111
|
```
|
96
112
|
|
113
|
+
## Test
|
114
|
+
|
115
|
+
rspec
|
116
|
+
|
97
117
|
## Contributing
|
98
118
|
|
99
119
|
1. Fork it
|
data/lib/chinese_cities/city.rb
CHANGED
@@ -1,40 +1,61 @@
|
|
1
1
|
module ChineseCities
|
2
2
|
class City
|
3
|
-
attr_accessor :name
|
3
|
+
attr_accessor :id, :name, :province_id
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
@
|
5
|
+
def initialize(city)
|
6
|
+
@id = city[:id]
|
7
|
+
@province_id = city[:province_id]
|
8
|
+
@name = city[:name]
|
7
9
|
end
|
8
10
|
|
9
11
|
def province
|
10
|
-
Province.find
|
12
|
+
Province.find(province_id)
|
11
13
|
end
|
12
14
|
|
13
15
|
def province_name
|
14
|
-
|
15
|
-
|
16
|
-
|
16
|
+
province.name
|
17
|
+
end
|
18
|
+
|
19
|
+
def regions
|
20
|
+
Region.find_by_city_id(id)
|
21
|
+
end
|
22
|
+
|
23
|
+
def region_names
|
24
|
+
regions.map(&:name)
|
17
25
|
end
|
18
26
|
|
19
27
|
class << self
|
20
28
|
|
21
29
|
private :new
|
22
30
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
31
|
+
def search(name)
|
32
|
+
cities = CITIES.select { |city| city[:name] =~ /#{name}/ }
|
33
|
+
cities.map do |city|
|
34
|
+
new(city)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def find_by_province_id(province_id)
|
39
|
+
cities = CITIES.select { |city| city[:province_id] == province_id }
|
40
|
+
cities.map { |city| new(city) } unless cities.nil?
|
41
|
+
end
|
42
|
+
|
43
|
+
def find(id)
|
44
|
+
city = CITIES.find { |city| city[:id] == id }
|
45
|
+
new(city) unless city.nil?
|
46
|
+
end
|
47
|
+
|
48
|
+
def where(name)
|
49
|
+
cities = CITIES.select { |city| city[:name] == name }
|
50
|
+
cities.map { |city| new(city) } unless cities.empty?
|
26
51
|
end
|
27
52
|
|
28
53
|
def all_names
|
29
|
-
|
30
|
-
province.last
|
31
|
-
end.flatten
|
54
|
+
CITIES.map { |city| city[:name] }
|
32
55
|
end
|
33
56
|
|
34
57
|
def all
|
35
|
-
|
36
|
-
new city
|
37
|
-
end
|
58
|
+
CITIES.map { |city| new(city) }
|
38
59
|
end
|
39
60
|
end
|
40
61
|
|