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