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 CHANGED
@@ -19,8 +19,8 @@ Or install it yourself as:
19
19
  ## Usage
20
20
 
21
21
  ```ruby
22
- province = ChineseCities::Province.find '北京市'
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
- city = ChineseCities::Cities.find '西城区'
75
- => #<ChineseCities::City:0xac40464 @name="西城区">
74
+ cities = ChineseCities::Cities.where '西城区'
75
+ => [#<ChineseCities::City:0xac40464 @name="西城区">]
76
76
 
77
- city.province
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
- # Search provinces and cities which name like your parameter
90
- ChineseCities.search '京'
91
- => {:provinces=>["北京市"], :cities=>["南京市", "京山县"]}
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
@@ -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 name
6
- @name = name
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 province_name
12
+ Province.find(province_id)
11
13
  end
12
14
 
13
15
  def province_name
14
- DATABASE.find do |province|
15
- province.last.include? self.name
16
- end.first
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 find name
24
- return nil unless all_names.include? name
25
- new name
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
- DATABASE.map do |province|
30
- province.last
31
- end.flatten
54
+ CITIES.map { |city| city[:name] }
32
55
  end
33
56
 
34
57
  def all
35
- all_names.map do |city|
36
- new city
37
- end
58
+ CITIES.map { |city| new(city) }
38
59
  end
39
60
  end
40
61