weather_hacker 0.1.1 → 0.1.2

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.
@@ -1,6 +1,7 @@
1
1
  require "httparty"
2
2
 
3
3
  require "weather_hacker/version"
4
+ require "weather_hacker/area_data"
4
5
  require "weather_hacker/client"
5
6
 
6
7
  class WeatherHacker
@@ -0,0 +1,295 @@
1
+ # encoding: UTF-8
2
+
3
+ class WeatherHacker
4
+ module AreaData
5
+ ID_BY_CITY = {
6
+ "稚内" => 1,
7
+ "旭川" => 2,
8
+ "留萌" => 3,
9
+ "札幌" => 4,
10
+ "岩見沢" => 5,
11
+ "倶知安" => 6,
12
+ "網走" => 7,
13
+ "北見" => 8,
14
+ "紋別" => 9,
15
+ "根室" => 10,
16
+ "釧路" => 11,
17
+ "帯広" => 12,
18
+ "室蘭" => 13,
19
+ "浦河" => 14,
20
+ "函館" => 15,
21
+ "江差" => 16,
22
+ "青森" => 17,
23
+ "むつ" => 18,
24
+ "八戸" => 19,
25
+ "秋田" => 20,
26
+ "横手" => 21,
27
+ "盛岡" => 22,
28
+ "宮古" => 23,
29
+ "大船渡" => 24,
30
+ "仙台" => 25,
31
+ "白石" => 26,
32
+ "山形" => 27,
33
+ "米沢" => 28,
34
+ "酒田" => 29,
35
+ "新庄" => 30,
36
+ "福島" => 31,
37
+ "小名浜" => 32,
38
+ "若松" => 33,
39
+ "水戸" => 54,
40
+ "土浦" => 55,
41
+ "宇都宮" => 56,
42
+ "大田原" => 57,
43
+ "前橋" => 58,
44
+ "みなかみ" => 59,
45
+ "さいたま" => 60,
46
+ "熊谷" => 61,
47
+ "秩父" => 62,
48
+ "東京" => 63,
49
+ "大島" => 64,
50
+ "八丈島" => 65,
51
+ "父島" => 66,
52
+ "千葉" => 67,
53
+ "銚子" => 68,
54
+ "館山" => 69,
55
+ "横浜" => 70,
56
+ "小田原" => 71,
57
+ "甲府" => 75,
58
+ "河口湖" => 76,
59
+ "富山" => 44,
60
+ "伏木" => 45,
61
+ "金沢" => 46,
62
+ "輪島" => 47,
63
+ "福井" => 48,
64
+ "敦賀" => 49,
65
+ "新潟" => 50,
66
+ "長岡" => 51,
67
+ "高田" => 52,
68
+ "相川" => 53,
69
+ "長野" => 72,
70
+ "松本" => 73,
71
+ "飯田" => 74,
72
+ "静岡" => 34,
73
+ "網代" => 35,
74
+ "三島" => 36,
75
+ "浜松" => 37,
76
+ "名古屋" => 38,
77
+ "豊橋" => 39,
78
+ "岐阜" => 40,
79
+ "高山" => 41,
80
+ "津" => 42,
81
+ "尾鷲" => 43,
82
+ "大津" => 77,
83
+ "彦根" => 78,
84
+ "京都" => 79,
85
+ "舞鶴" => 80,
86
+ "大阪" => 81,
87
+ "神戸" => 82,
88
+ "豊岡" => 83,
89
+ "奈良" => 84,
90
+ "風屋" => 85,
91
+ "和歌山" => 86,
92
+ "潮岬" => 87,
93
+ "岡山" => 88,
94
+ "津山" => 89,
95
+ "広島" => 90,
96
+ "庄原" => 91,
97
+ "松江" => 92,
98
+ "浜田" => 93,
99
+ "西郷" => 94,
100
+ "鳥取" => 95,
101
+ "米子" => 96,
102
+ "下関" => 97,
103
+ "山口" => 98,
104
+ "柳井" => 99,
105
+ "萩" => 100,
106
+ "徳島" => 101,
107
+ "日和佐" => 102,
108
+ "高松" => 103,
109
+ "松山" => 104,
110
+ "新居浜" => 105,
111
+ "宇和島" => 106,
112
+ "高知" => 107,
113
+ "室戸" => 108,
114
+ "清水" => 109,
115
+ "福岡" => 110,
116
+ "八幡" => 111,
117
+ "飯塚" => 112,
118
+ "久留米" => 113,
119
+ "大分" => 114,
120
+ "中津" => 115,
121
+ "日田" => 116,
122
+ "佐伯" => 117,
123
+ "長崎" => 118,
124
+ "佐世保" => 119,
125
+ "厳原" => 120,
126
+ "福江" => 121,
127
+ "佐賀" => 122,
128
+ "伊万里" => 123,
129
+ "熊本" => 124,
130
+ "阿蘇乙姫" => 125,
131
+ "牛深" => 126,
132
+ "人吉" => 127,
133
+ "宮崎" => 128,
134
+ "延岡" => 129,
135
+ "都城" => 130,
136
+ "高千穂" => 131,
137
+ "鹿児島" => 132,
138
+ "鹿屋" => 133,
139
+ "種子島" => 134,
140
+ "名瀬" => 135,
141
+ "那覇" => 136,
142
+ "名護" => 137,
143
+ "久米島" => 138,
144
+ "南大東島" => 139,
145
+ "宮古島" => 140,
146
+ "石垣島" => 141,
147
+ "与那国島" => 142
148
+ }
149
+
150
+ PREF_BY_CITY = {
151
+ "稚内" => "北海",
152
+ "旭川" => "北海",
153
+ "留萌" => "北海",
154
+ "札幌" => "北海",
155
+ "岩見沢" => "北海",
156
+ "倶知安" => "北海",
157
+ "網走" => "北海",
158
+ "北見" => "北海",
159
+ "紋別" => "北海",
160
+ "根室" => "北海",
161
+ "釧路" => "北海",
162
+ "帯広" => "北海",
163
+ "室蘭" => "北海",
164
+ "浦河" => "北海",
165
+ "函館" => "北海",
166
+ "江差" => "北海",
167
+ "青森" => "青森",
168
+ "むつ" => "青森",
169
+ "八戸" => "青森",
170
+ "秋田" => "秋田",
171
+ "横手" => "秋田",
172
+ "盛岡" => "岩手",
173
+ "宮古" => "岩手",
174
+ "大船渡" => "岩手",
175
+ "仙台" => "宮城",
176
+ "白石" => "宮城",
177
+ "山形" => "山形",
178
+ "米沢" => "山形",
179
+ "酒田" => "山形",
180
+ "新庄" => "山形",
181
+ "福島" => "福島",
182
+ "小名浜" => "福島",
183
+ "若松" => "福島",
184
+ "水戸" => "茨城",
185
+ "土浦" => "茨城",
186
+ "宇都宮" => "栃木",
187
+ "大田原" => "栃木",
188
+ "前橋" => "群馬",
189
+ "みなかみ" => "群馬",
190
+ "さいたま" => "埼玉",
191
+ "熊谷" => "埼玉",
192
+ "秩父" => "埼玉",
193
+ "東京" => "東京",
194
+ "大島" => "東京",
195
+ "八丈島" => "東京",
196
+ "父島" => "東京",
197
+ "千葉" => "千葉",
198
+ "銚子" => "千葉",
199
+ "館山" => "千葉",
200
+ "横浜" => "神奈川",
201
+ "小田原" => "神奈川",
202
+ "甲府" => "山梨",
203
+ "河口湖" => "山梨",
204
+ "富山" => "富山",
205
+ "伏木" => "富山",
206
+ "金沢" => "石川",
207
+ "輪島" => "石川",
208
+ "福井" => "福井",
209
+ "敦賀" => "福井",
210
+ "新潟" => "新潟",
211
+ "長岡" => "新潟",
212
+ "高田" => "新潟",
213
+ "相川" => "新潟",
214
+ "長野" => "長野",
215
+ "松本" => "長野",
216
+ "飯田" => "長野",
217
+ "静岡" => "静岡",
218
+ "網代" => "静岡",
219
+ "三島" => "静岡",
220
+ "浜松" => "静岡",
221
+ "名古屋" => "愛知",
222
+ "豊橋" => "愛知",
223
+ "岐阜" => "岐阜",
224
+ "高山" => "岐阜",
225
+ "津" => "三重",
226
+ "尾鷲" => "三重",
227
+ "大津" => "滋賀",
228
+ "彦根" => "滋賀",
229
+ "京都" => "京都",
230
+ "舞鶴" => "京都",
231
+ "大阪" => "大阪",
232
+ "神戸" => "兵庫",
233
+ "豊岡" => "兵庫",
234
+ "奈良" => "奈良",
235
+ "風屋" => "奈良",
236
+ "和歌山" => "和歌山",
237
+ "潮岬" => "和歌山",
238
+ "岡山" => "岡山",
239
+ "津山" => "岡山",
240
+ "広島" => "広島",
241
+ "庄原" => "広島",
242
+ "松江" => "島根",
243
+ "浜田" => "島根",
244
+ "西郷" => "島根",
245
+ "鳥取" => "鳥取",
246
+ "米子" => "鳥取",
247
+ "下関" => "山口",
248
+ "山口" => "山口",
249
+ "柳井" => "山口",
250
+ "萩" => "山口",
251
+ "徳島" => "徳島",
252
+ "日和佐" => "徳島",
253
+ "高松" => "香川",
254
+ "松山" => "愛媛",
255
+ "新居浜" => "愛媛",
256
+ "宇和島" => "愛媛",
257
+ "高知" => "高知",
258
+ "室戸" => "高知",
259
+ "清水" => "高知",
260
+ "福岡" => "福岡",
261
+ "八幡" => "福岡",
262
+ "飯塚" => "福岡",
263
+ "久留米" => "福岡",
264
+ "大分" => "大分",
265
+ "中津" => "大分",
266
+ "日田" => "大分",
267
+ "佐伯" => "大分",
268
+ "長崎" => "長崎",
269
+ "佐世保" => "長崎",
270
+ "厳原" => "長崎",
271
+ "福江" => "長崎",
272
+ "佐賀" => "佐賀",
273
+ "伊万里" => "佐賀",
274
+ "熊本" => "熊本",
275
+ "阿蘇乙姫" => "熊本",
276
+ "牛深" => "熊本",
277
+ "人吉" => "熊本",
278
+ "宮崎" => "宮崎",
279
+ "延岡" => "宮崎",
280
+ "都城" => "宮崎",
281
+ "高千穂" => "宮崎",
282
+ "鹿児島" => "鹿児島",
283
+ "鹿屋" => "鹿児島",
284
+ "種子島" => "鹿児島",
285
+ "名瀬" => "鹿児島",
286
+ "那覇" => "沖縄",
287
+ "名護" => "沖縄",
288
+ "久米島" => "沖縄",
289
+ "南大東島" => "沖縄",
290
+ "宮古島" => "沖縄",
291
+ "石垣島" => "沖縄",
292
+ "与那国島" => "沖縄"
293
+ }
294
+ end
295
+ end
@@ -30,12 +30,6 @@ class WeatherHacker
30
30
  self.class.get(*args)
31
31
  end
32
32
 
33
- # set @pref_by_city and @id_by_city
34
- def update_area_table
35
- hash = get AREA_TABLE_URL
36
- parse_area_table(hash)
37
- end
38
-
39
33
  # return city id via zipcode API
40
34
  def city_id_by_zipcode(zipcode)
41
35
  zipcode = zipcode.to_s.tr("0-9", "0-9").tr("-", "").tr("-", "")
@@ -44,7 +38,10 @@ class WeatherHacker
44
38
  hash = info_by_zipcode(zipcode)
45
39
  city = canonical_city(hash["city"])
46
40
  pref = canonical_pref(hash["state"])
47
- id_by_city[city] || id_by_city[pref] || id_by_pref[pref]
41
+
42
+ WeatherHacker::AreaData::ID_BY_CITY[city] ||
43
+ WeatherHacker::AreaData::ID_BY_CITY[pref] ||
44
+ WeatherHacker::AreaData::ID_BY_PREF[pref]
48
45
  end
49
46
 
50
47
  # return like following Hash
@@ -64,7 +61,23 @@ class WeatherHacker
64
61
  Hash[values.map { |v| v.to_a.flatten }]
65
62
  end
66
63
 
67
- # update area table once
64
+ # canonical prefecture name
65
+ # 道東 => 北海道
66
+ # 道央 => 北海道
67
+ # 道南 => 北海道
68
+ # 道北 => 北海道
69
+ def canonical_pref(name)
70
+ name = name.gsub(/^道.*/, "北海道")
71
+ name = name.gsub(/[都道府県]$/, "")
72
+ name
73
+ end
74
+
75
+ # canonical city name
76
+ def canonical_city(city)
77
+ city.gsub(/市$/, "")
78
+ end
79
+
80
+ # use this wehn you want to update AreaData
68
81
  def pref_by_city
69
82
  @pref_by_city ||= begin
70
83
  update_area_table
@@ -72,7 +85,7 @@ class WeatherHacker
72
85
  end
73
86
  end
74
87
 
75
- # update area table once
88
+ # use this wehn you want to update AreaData
76
89
  def id_by_city
77
90
  @id_by_city ||= begin
78
91
  update_area_table
@@ -80,6 +93,12 @@ class WeatherHacker
80
93
  end
81
94
  end
82
95
 
96
+ # set @pref_by_city and @id_by_city
97
+ def update_area_table
98
+ hash = get AREA_TABLE_URL
99
+ parse_area_table(hash)
100
+ end
101
+
83
102
  # return typical city's id
84
103
  def id_by_pref
85
104
  @id_by_pref ||= pref_by_city.inject({}) { |hash, item|
@@ -112,22 +131,6 @@ class WeatherHacker
112
131
  raise ParseError, "Failed to parse area data from API"
113
132
  end
114
133
 
115
- # canonical prefecture name
116
- # 道東 => 北海道
117
- # 道央 => 北海道
118
- # 道南 => 北海道
119
- # 道北 => 北海道
120
- def canonical_pref(name)
121
- name = name.gsub(/^道.*/, "北海道")
122
- name = name.gsub(/[都道府県]$/, "")
123
- name
124
- end
125
-
126
- # canonical city name
127
- def canonical_city(city)
128
- city.gsub(/市$/, "")
129
- end
130
-
131
134
  # Custom Error class to raise in parse response from API
132
135
  class ParseError < StandardError; end
133
136
  end
@@ -1,3 +1,3 @@
1
1
  class WeatherHacker
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weather_hacker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-08 00:00:00.000000000 Z
12
+ date: 2012-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70218237022340 !ruby/object:Gem::Requirement
16
+ requirement: &70181545291080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.9.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70218237022340
24
+ version_requirements: *70181545291080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &70218237021920 !ruby/object:Gem::Requirement
27
+ requirement: &70181545290660 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70218237021920
35
+ version_requirements: *70181545290660
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70218237021460 !ruby/object:Gem::Requirement
38
+ requirement: &70181545290200 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70218237021460
46
+ version_requirements: *70181545290200
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &70218237021040 !ruby/object:Gem::Requirement
49
+ requirement: &70181545289780 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70218237021040
57
+ version_requirements: *70181545289780
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov-vim
60
- requirement: &70218237020620 !ruby/object:Gem::Requirement
60
+ requirement: &70181545289360 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70218237020620
68
+ version_requirements: *70181545289360
69
69
  description: Library for Livedoor Weather Web Service
70
70
  email:
71
71
  - r7kamura@gmail.com
@@ -80,6 +80,7 @@ files:
80
80
  - README.md
81
81
  - Rakefile
82
82
  - lib/weather_hacker.rb
83
+ - lib/weather_hacker/area_data.rb
83
84
  - lib/weather_hacker/client.rb
84
85
  - lib/weather_hacker/version.rb
85
86
  - spec/fixtures/id_by_city.rb
@@ -103,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
104
  version: '0'
104
105
  segments:
105
106
  - 0
106
- hash: -1826125772160872950
107
+ hash: -14138050602801517
107
108
  required_rubygems_version: !ruby/object:Gem::Requirement
108
109
  none: false
109
110
  requirements:
@@ -112,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
113
  version: '0'
113
114
  segments:
114
115
  - 0
115
- hash: -1826125772160872950
116
+ hash: -14138050602801517
116
117
  requirements: []
117
118
  rubyforge_project:
118
119
  rubygems_version: 1.8.15