myweatherforecast 1.0.2 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11ea5e686749c95022011a476df5dca9249c52be154c1bc05cb0a3617b8ac788
4
- data.tar.gz: e81794bc2bf5cd63883f1ed8ec88dffe27ec5f05bbff94d215e44b096a21cc4e
3
+ metadata.gz: f610e30f76a028070f0260348aa5e6ebd35b10973a0df575dd932522a39f0739
4
+ data.tar.gz: e2b54d313adfd0fe4b8a3b7a1fb5db1629f28641667816cea14b8572e336b61c
5
5
  SHA512:
6
- metadata.gz: b4a67326665bb8bee5cf7c15800c037d9ff9f2b93889d42acf9ca9ddd5e53834f4fcbc95a640b044ca1655d344327e868a67a54324bc3890790528b6e4c88e6f
7
- data.tar.gz: 2888f61cc51a0739838aef54b2e170912ca49bdb781b3f86bddf32ef826337a1ce2b873287c2b86e4e72a1b5b8600224f9360e89d6f0dd090e7303de3a1a1da9
6
+ metadata.gz: 5d5128ab239532d9b269ba84cc6069622aea07e622f475ee772f73619643036622efd170ef66b445b7dcfaa25b5f0dfcbf9925f1f537a6517fc96af250aaa563
7
+ data.tar.gz: 16f79ee28d46e4d27902db34f0d6f423976a4885ba08916cd37fc012698d78623599b4ffe0e52bbda54e7d96d694d794776cd4fbc8797afddd7597ec88b09982
checksums.yaml.gz.sig CHANGED
Binary file
@@ -14,31 +14,31 @@ require 'forecast_io'
14
14
  # SI explained: https://en.wikipedia.org/wiki/SI_derived_unit
15
15
 
16
16
  class MyWeatherForecast
17
-
17
+
18
18
  attr_reader :coordinates
19
19
 
20
20
  def initialize(*location, api_key: nil, units: :auto, timeout: 3, \
21
21
  symbols: true)
22
22
  lat, lon = if location[0].is_a? Array then
23
-
23
+
24
24
  location[0]
25
-
25
+
26
26
  elsif location.any?
27
-
27
+
28
28
  results = Geocoder.search(location.first)
29
29
  return puts 'location not found' unless results.any?
30
30
  results[0].coordinates
31
-
31
+
32
32
  else
33
-
34
- h = JSON.parse open('http://jsonip.com/').read
33
+
34
+ h = JSON.parse URI.open('http://jsonip.com/').read
35
35
  Geocoder.configure(timeout: timeout)
36
36
  results = Geocoder.search(h['ip'])
37
37
  return puts 'could not determine location from IP address' unless \
38
38
  results.any?
39
39
  results[0].coordinates
40
-
41
- end
40
+
41
+ end
42
42
 
43
43
  ForecastIO.api_key = api_key
44
44
 
@@ -46,55 +46,55 @@ class MyWeatherForecast
46
46
  @forecast = ForecastIO.forecast(lat, lon, params: params)
47
47
 
48
48
  autounits = @forecast['flags']['units']
49
-
49
+
50
50
  @tlabel = if symbols then
51
51
  autounits == 'us' ? '°F' : '°C'
52
52
  else
53
53
  autounits == 'us' ? 'degrees Farenheit' : 'degrees Celcius'
54
54
  end
55
-
55
+
56
56
  @coordinates = [lat, lon]
57
57
  @symbols = symbols
58
58
 
59
59
  end
60
60
 
61
61
  class Hourly
62
-
62
+
63
63
  attr_reader :today
64
64
 
65
65
  def initialize(forecast, tlabel, i=0)
66
-
66
+
67
67
  @forecast, @tlabel, @i = forecast, tlabel, i
68
-
68
+
69
69
  @x, @hourly_data = if i > 0 then
70
70
  [forecast['hourly']['data'][i], forecast['hourly']['data'][i..-1]]
71
71
  else
72
72
  [forecast.currently, forecast['hourly']['data']]
73
73
  end
74
-
74
+
75
75
  #@speed_label = 'kph'
76
76
  @speed_label = 'mph' #if @forecast['flags']['units'][/^uk2$/]
77
77
 
78
- end
79
-
78
+ end
79
+
80
80
  def at(raw_hour)
81
-
81
+
82
82
  hour = Time.parse(raw_hour).hour
83
83
  i = 0
84
84
 
85
85
  return if Time.at(@hourly_data[i]['time']).hour > hour
86
-
86
+
87
87
  i += 1 until Time.at(@hourly_data[i]['time']).hour == hour
88
88
 
89
89
  Hourly.new(@forecast, @tlabel, i+@i)
90
90
 
91
91
  end
92
-
92
+
93
93
  def ahead(advance=2)
94
-
94
+
95
95
  current_hour = Time.at(@hourly_data[0]['time']).hour + advance
96
-
97
- case current_hour
96
+
97
+ name = case current_hour
98
98
  when 12..17
99
99
  :afternoon
100
100
  when 0..5
@@ -105,15 +105,18 @@ class MyWeatherForecast
105
105
  :morning
106
106
  when night_time.hour..23
107
107
  :night
108
- end
109
-
108
+ end
109
+
110
+ method(name).call
111
+
110
112
  end
111
-
112
- def afternoon() period(12, 17) end
113
+
114
+ def afternoon() period(12, 17) end
115
+ def detail() period(0, 23) end
113
116
  def early_hours() period(0, 5) end
114
-
117
+
115
118
  def emoji()
116
-
119
+
117
120
  h = {
118
121
  'clear-day' => :sun,
119
122
  'clear-night' => :night_with_stars,
@@ -125,61 +128,61 @@ class MyWeatherForecast
125
128
  'cloudy' => :cloud,
126
129
  'partly-cloudy-day' => :sun_behind_cloud,
127
130
  'partly-cloudy-night' => :cloud
128
- }
129
-
131
+ }
132
+
130
133
  Emoji2020.new(h[icon()]).to_s
131
-
134
+
132
135
  end
133
-
136
+
134
137
  def evening() period(17, night_time.hour+1) end
135
- def morning() period(6, 12) end
136
- def night() period(night_time.hour, 23) end
137
-
138
+ def morning() period(6, 12) end
139
+ def night() period(night_time.hour, 23) end
140
+
138
141
  def night_time()
139
142
  Time.at(@day.sunsetTime)
140
- end
141
-
143
+ end
144
+
142
145
  def humidity()
143
146
  @x.humidity
144
147
  end
145
-
148
+
146
149
  def icon()
147
150
  @x.icon
148
151
  end
149
-
152
+
150
153
  def noon()
151
154
  at_hour 12
152
155
  end
153
-
156
+
154
157
  alias midday noon
155
158
 
156
159
  def to_s
157
160
  r = "%s: %d%s, %s" % [self.time.strftime("%-I%P"), @x.temperature.round, \
158
161
  @tlabel, @x.summary]
159
- r << ", %s" % [windspeed] if r[/windy|breezy/i]
162
+ r << ", %s" % [windspeed] if r[/windy|breezy/i]
160
163
  r
161
164
  end
162
165
 
163
166
  def summary()
164
167
  @x.summary
165
168
  end
166
-
169
+
167
170
  def sunrise()
168
171
  @day.sunrise
169
172
  end
170
-
173
+
171
174
  def sunset()
172
175
  @day.sunset
173
- end
174
-
175
- alias night_time sunset
176
-
176
+ end
177
+
178
+ alias night_time sunset
179
+
177
180
  def temperature
178
181
  "%s°" % @x.temperature.round
179
182
  end
180
-
183
+
181
184
  alias temp temperature
182
-
185
+
183
186
  def time
184
187
  Time.at @x.time
185
188
  end
@@ -187,43 +190,43 @@ class MyWeatherForecast
187
190
  def visibility()
188
191
  @x.visibility
189
192
  end
190
-
193
+
191
194
  def windspeed()
192
195
  "%s%s" % [@x.windSpeed.round, @speed_label]
193
196
  end
194
-
197
+
195
198
  private
196
-
199
+
197
200
  def at_hour(n)
198
201
 
199
202
  i = 0
200
203
 
201
- return if Time.at(@hourly_data[i]['time']).hour > n
204
+ return if Time.at(@hourly_data[i]['time']).hour > n
202
205
  len = @hourly_data.length
203
206
  i += 1 until Time.at(@hourly_data[i]['time']).hour == n or i >= len - 1
204
207
 
205
208
  Hourly.new(@forecast, @tlabel, i+@i)
206
209
  end
207
-
210
+
208
211
  def period(hr1, hr2)
209
-
210
- current_hour = Time.at(@hourly_data[0]['time']).hour
211
-
212
+
213
+ current_hour = Time.at(@hourly_data[0]['time']).hour
214
+
212
215
  return if current_hour >= hr2
213
-
216
+
214
217
  hr1 = current_hour if current_hour > hr1
215
218
  hr2 = @hourly_data.length - 2 if hr2 + 1 > @hourly_data.length - 1
216
219
  (hr1..hr2).map {|n| at_hour n}
217
-
220
+
218
221
  end
219
-
222
+
220
223
  end
221
-
222
-
224
+
225
+
223
226
  class Daily < Hourly
224
-
227
+
225
228
  def initialize(forecast, tlabel, d=0)
226
-
229
+
227
230
  @forecast = forecast
228
231
 
229
232
  @x = forecast['daily']['data'][d]
@@ -232,48 +235,51 @@ class MyWeatherForecast
232
235
  found = forecast['hourly']['data'].detect do |hour|
233
236
  Time.at(@x.time).to_date == Time.at(hour.time).to_date
234
237
  end
235
-
236
- @i = forecast['hourly']['data'].index found
237
-
238
+
239
+ @i = forecast['hourly']['data'].index found
240
+
238
241
  return if @i.nil?
239
242
 
240
243
  @hourly_data = forecast['hourly']['data'][@i..-1]
241
244
  @day = self
242
-
245
+
243
246
  end
244
-
247
+
248
+ def day()
249
+ Date::ABBR_DAYNAMES[self.time.wday]
250
+ end
251
+
245
252
  def to_s
246
-
247
- label = self.time.to_date == Time.now.to_date ? 'Today' : \
248
- Date::ABBR_DAYNAMES[self.time.wday]
249
-
253
+
254
+ label = self.time.to_date == Time.now.to_date ? 'Today' : day()
250
255
  mask = @symbols ? "%s: ▽%s ▲%s, %s" : "%s: %s %s, %s"
251
256
  mask % [label, tempmin, tempmax, @x.summary]
257
+
252
258
  end
253
-
259
+
254
260
  def sunrise()
255
261
  Time.at @x.sunriseTime
256
262
  end
257
-
263
+
258
264
  def sunset()
259
265
  Time.at @x.sunsetTime
260
- end
261
-
266
+ end
267
+
262
268
  def temperature()
263
269
  end
264
270
 
265
271
  def tempmin
266
272
  "%s°" % [@x.temperatureMin.round]
267
273
  end
268
-
274
+
269
275
  def tempmax
270
276
  "%s°" % [@x.temperatureMax.round]
271
277
  end
272
-
278
+
273
279
 
274
280
  end
275
-
276
-
281
+
282
+
277
283
  # e.g.
278
284
  # require 'myweatherforecast'
279
285
  #
@@ -289,32 +295,32 @@ class MyWeatherForecast
289
295
  end
290
296
 
291
297
  def hours()
292
-
298
+
293
299
  len = @forecast['hourly']['data'].length
294
300
  len.times.map {|i| Hourly.new @forecast, @tlabel, i}
295
301
 
296
302
  end
297
-
303
+
298
304
  def now()
299
305
  Hourly.new(@forecast, @tlabel)
300
306
  end
301
-
307
+
302
308
  def today()
303
309
  Daily.new(@forecast, @tlabel)
304
310
  end
305
-
306
- alias currently now
307
-
311
+
312
+ alias currently now
313
+
308
314
  def tonight()
309
315
  Daily.new(@forecast, @tlabel).night
310
316
  end
311
-
317
+
312
318
  alias this today
313
-
314
- def tomorrow()
319
+
320
+ def tomorrow()
315
321
  Daily.new(@forecast, @tlabel, 1)
316
- end
317
-
322
+ end
323
+
318
324
  def monday() day :monday end
319
325
  def tuesday() day :tuesday end
320
326
  def wednesday() day :wednesday end
@@ -322,7 +328,7 @@ class MyWeatherForecast
322
328
  def friday() day :friday end
323
329
  def saturday() day :saturday end
324
330
  def sunday() day :sunday end
325
-
331
+
326
332
  alias sat saturday
327
333
  alias sun sunday
328
334
  alias mon monday
@@ -331,13 +337,30 @@ class MyWeatherForecast
331
337
  alias thu thursday
332
338
  alias fri friday
333
339
 
340
+ def next_3days()
341
+
342
+ days().take(4)[1..-1].map do |x|
343
+ "%s: %s - %s #{x.emoji} %s" % [x.time.strftime("%a"), x.tempmin,
344
+ x.tempmax, x.summary]
345
+ end.join("\n")
346
+
347
+ end
348
+
349
+ def next_5days()
350
+
351
+ days().take(6)[1..-1].map do |x|
352
+ "%s: %s %s" % [x.time.strftime("%a"), x.tempmax, x.summary]
353
+ end.join("\n")
354
+
355
+ end
356
+
334
357
  private
335
-
358
+
336
359
  def day(name)
337
-
360
+
338
361
  name = (name.to_s + '?').to_sym
339
-
340
- d = 0
362
+
363
+ d = 0
341
364
  d += 1 until Time.at(@forecast['daily']['data'][d].time).method(name).call
342
365
  Time.at(@forecast['daily']['data'][d].time)
343
366
  Daily.new(@forecast, @tlabel, d)
data.tar.gz.sig CHANGED
@@ -1,3 +1,2 @@
1
- �b\ꐯ���w�D zE�H{�0�<G��2�4�l{,�?ٯ+��( �e~:%��9E;���W�˝��k���| ��M�R8kݪ,�)}������Wn9�/sWi��)m(T��F������x�I:��߸�.��Qn��T��[��r0�5� D��ȫʍZ>������
2
- L}���ZX��߻���P�|��ę5~�C�\f�s֚��u[u^Ev��(1i��6Y��XO ��*��!���>`R�ѐ�$�q��'R�57 �%GXy)!�LO�������m����fGk����s8EM�-ig�@�w���Q���92(�h*���T.
3
- K*�l��F��m�Z��w�`=0���E�����أ��܈"���v�Ibr�ռ
1
+ )�V&�9�^Yu Du��
2
+ ��}7��ѕ�(5hr�`AJojP�=�%���;d1w�YB�t���D���hQ���KU'N��1�#Q:Q���\�s}N�����&��I��^?�'lZ:�����6���1��(6��i�|,Yw�}R�P_3>�-ب��϶�n�ش��#�0x�m1�����h��WC���vS6+q�������v�Qzi�#�{@F��]���4��!? 9UD;�!?�(7L5g:��y2�*������S����9r^��,�A?��\�ՊW]�!H��"U�~RۥA��U������=����.�����P����f��y:���<��{���)�v�m��8Z|,Ss���rfnE~�iZ�{��ev�����ۜ
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myweatherforecast
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNDI2MDkwMDEzWhcN
15
- MjEwNDI2MDkwMDEzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDy5Ev/
17
- +TmmW2Zbqs3nwm1ZKztFwS4HKierISuHHK9LRVUoocJ1HAMt65t9K0FqLHcPw8Cq
18
- A83Hh6pyOC38Q6xE0bACRz05jL/AKWQU+KF2o9gyph4+b/Y+S51627/nJPaaPl/i
19
- /AAkCPX+XYZZx6Ts3c4bajWbBZQvduKz+Mgns0HHfZyU4OL9PhjQSpL4w+b53C7I
20
- rROHOcskWOmKhqD04VLoB0k7IoKQ6iD6AJLGwcLPIEKcQ00F6kiA9lFYUt9Iw/YM
21
- Ci1W6SO7b80+7nYLeKgYMF3xfZwUB7ZwrIv3oNYZqLmSnk2NlDlibYNOd8CEm51d
22
- il/LCYqBjsx8hQxddQ7bqckkMHI2aWfnB8CH/l3r7vWvkKrlyWkA+yc5Hain86eu
23
- qip4E40kzjT1dKNuayS8MWYqD0kGrvZd5J6mm0w1SVSCmk5HVR68WkpNT63IXS5Y
24
- tqflllrFbf1onOkOw3GOrN+IKGVnBdxZEpgwnROXTnswdUJ7Q8POSiK2Qu8CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUcUjjw62h
26
- LOtlQ5ITbp0+TWaMl9EwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMTE4MjAzNTU2WhcN
15
+ MjIxMTE4MjAzNTU2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC4eL0X
17
+ SYCTqoyqfk6AmnRvGe/0sgrAywdGq4FJb4B56LmiPEJI6UH8HNxsSCtqhvSXg35e
18
+ 5ZcWu9OwFrZiSqJmj8JaLVLTtm094hBXKgDFCUFhlVsdUZ8G/0c+J3uDjM5ucCyX
19
+ gRfKBoTnGup7pGstGChVMn00RzcsgfO30p1dxQcYTxWsbqEb1hlfmVIfRhmDdq4T
20
+ tLjyW8ZhgblNfQIlTnRB81x3A1E7ECL4nQkiKUjmzipYOXW34st795FA5rQlyiKC
21
+ PgnsUa2QpUcZVS7Rx2GfSVoftupHEPNUUuCnW1q0bihUf6Y34n4Ha0bFl0Q1mlEk
22
+ 1mSE0m3XHQqFmJYqLehMpMsOUQSRwjDPRO1ciMbNT+QaoKKaeYP6LALC1sEODrNZ
23
+ ux05Zw5jUgIMc046rFRR/tBqM6r+WvGbemLMNpOvQwwMkPJmpu0ROmAAFjZyCis6
24
+ qllnE+P9M7S0ULLFkPnoCQE62fFGpHkcoW75rYplj42MZxz6bMtw5xuf718CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUNEqVjENP
26
+ Ii49GrSvh1D69uhDT/AwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAUzolYndXxgA1eH/QTx1gbEK4ay7UW4/BUMZcenlM
29
- Xx841MdN5yfy91NWeo/Qy0ruxCnNtCvXsVEx6P1TVLaZBxkU/i/H3TgNrOsqgRHz
30
- 8S428Xg3PTTYkMf27+sLMO8uXmEYeCjrbdEyUBiCtmPht776T2nepwOJNwqgb8x8
31
- qSMtqEYZxY3x+4Dd9CNf2xQujQ26Q4qyZnzYIuZQb9aHMgAiww3rst8Kxc83pggI
32
- It47yWd2GhjXd7fv/9MZ0Uhfov+ExsqSr9H0HDjf8KCL+Y9OzNAW7ixpQpXK0pQJ
33
- i54CNZiaGNwJnBVp9USO7cA5jCKN1Iouaj/Vbie5XXhiGnOZ/cyfna/K/fX10/lh
34
- JL0NiXQMvY3FTEjgq7BZxit1Q7dE07TH54CD/f5EMNm9v/f5BKVPDF+pfAUrZnKy
35
- T8ZItjfCqcG6MNMdmPqplYAqpSJzVB9ucdkrz8Ia5Lf1waJw6Dd0m1zHWYSofIH8
36
- HuG3HnRIMQNQE2s1PFtxmX2w
28
+ BgkqhkiG9w0BAQsFAAOCAYEAT0hmJ5VYOXO6p9xQlh1WGOzDa0lKn8n8a1yIjr+s
29
+ G/cc6Ubk492Pg3wwogbp6XEhZkbWhupyi1I+j7Tk8W5QQ//ZNgc5QVBCLuDRv9GI
30
+ YEM7k4laUkARx79bemoiqedrMR63E1SDqqlOIOC77Wyz8ZK264Adj+yW3CizoX15
31
+ d2ji2ZlfG5itpXTdATQEN2r+FaXWwdom+xxKg2/so8/ZHylNr7pVKWzvO/Pc7GaZ
32
+ 7l+jA4xr1qSM7k+UKSw2hKtIyjzXRjUkmdusaT+EvuajIvGHuATk9VnIFK3K+DcE
33
+ p33f9tL1S5hvcHIuITP/R6DbYBn6cbrmsKWGQFcxaBYzjmvXeriqV+U7QAbZD7yU
34
+ cfNYElTbzllkLfSpLAxf6SDmp8JjVYm3lWZ/AiSZTY5GDSLy/gAfv3wI2uvxi61h
35
+ Xe+ZY1GQbdQEDFDEvbHvn24bxuz3fQ4VF8L39HzvwQn9EXjvOAxOoQEHJAPS+uAn
36
+ iVXeBn9xu1pLJZy7L6X+Op2j
37
37
  -----END CERTIFICATE-----
38
- date: 2020-06-16 00:00:00.000000000 Z
38
+ date: 2021-11-18 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: forecast_io
@@ -61,44 +61,44 @@ dependencies:
61
61
  name: geocoder
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '1.6'
67
64
  - - ">="
68
65
  - !ruby/object:Gem::Version
69
- version: 1.6.2
66
+ version: 1.7.0
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.7'
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '1.6'
77
74
  - - ">="
78
75
  - !ruby/object:Gem::Version
79
- version: 1.6.2
76
+ version: 1.7.0
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.7'
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: emoji2020
82
82
  requirement: !ruby/object:Gem::Requirement
83
83
  requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 0.2.0
87
84
  - - "~>"
88
85
  - !ruby/object:Gem::Version
89
86
  version: '0.2'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.2.1
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 0.2.0
97
94
  - - "~>"
98
95
  - !ruby/object:Gem::Version
99
96
  version: '0.2'
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.2.1
100
100
  description:
101
- email: james@jamesrobertson.eu
101
+ email: digital.robertson@gmail.com
102
102
  executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
@@ -123,7 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  requirements: []
126
- rubygems_version: 3.0.3
126
+ rubyforge_project:
127
+ rubygems_version: 2.7.10
127
128
  signing_key:
128
129
  specification_version: 4
129
130
  summary: This gem is a wrapper of the forecast_io gem.
metadata.gz.sig CHANGED
Binary file