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
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
|
|