myweatherforecast 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +2 -7
- data/lib/myweatherforecast.rb +108 -108
- data.tar.gz.sig +2 -2
- metadata +35 -34
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f610e30f76a028070f0260348aa5e6ebd35b10973a0df575dd932522a39f0739
|
4
|
+
data.tar.gz: e2b54d313adfd0fe4b8a3b7a1fb5db1629f28641667816cea14b8572e336b61c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d5128ab239532d9b269ba84cc6069622aea07e622f475ee772f73619643036622efd170ef66b445b7dcfaa25b5f0dfcbf9925f1f537a6517fc96af250aaa563
|
7
|
+
data.tar.gz: 16f79ee28d46e4d27902db34f0d6f423976a4885ba08916cd37fc012698d78623599b4ffe0e52bbda54e7d96d694d794776cd4fbc8797afddd7597ec88b09982
|
checksums.yaml.gz.sig
CHANGED
@@ -1,7 +1,2 @@
|
|
1
|
-
|
2
|
-
2��V�#
|
3
|
-
c�r��qcv{��*F�$;���]����TK�t�,��2�G��p�Ϋ����m�7�=Ԕ��ۥ�����f���:�Js�c���Jn;`f��$�K�]�x\g�@���9���"Zf�e%��љ֖}�#�vK�2s���R��%"���1G�(%��Ʒ:�`�qE��C�9��*�u�����j�K�c�"��<!\�;I�K��'��5a��MgL�`�T�9;0
|
4
|
-
|
5
|
-
IJ]�a
|
6
|
-
|
7
|
-
��&"�C�u�蕨?=D�]
|
1
|
+
v���A�yY"K訮�����Q����M���
|
8
2
|
�
|
3
|
+
\�aI])���ސLH&p�e|5�֚��.ICg�n����?��e
|
data/lib/myweatherforecast.rb
CHANGED
@@ -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,54 +46,54 @@ 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
|
-
|
96
|
+
|
97
97
|
name = case current_hour
|
98
98
|
when 12..17
|
99
99
|
:afternoon
|
@@ -105,18 +105,18 @@ class MyWeatherForecast
|
|
105
105
|
:morning
|
106
106
|
when night_time.hour..23
|
107
107
|
:night
|
108
|
-
end
|
109
|
-
|
108
|
+
end
|
109
|
+
|
110
110
|
method(name).call
|
111
|
-
|
111
|
+
|
112
112
|
end
|
113
|
-
|
114
|
-
def afternoon() period(12, 17) end
|
115
|
-
def detail() period(0, 23) end
|
113
|
+
|
114
|
+
def afternoon() period(12, 17) end
|
115
|
+
def detail() period(0, 23) end
|
116
116
|
def early_hours() period(0, 5) end
|
117
|
-
|
117
|
+
|
118
118
|
def emoji()
|
119
|
-
|
119
|
+
|
120
120
|
h = {
|
121
121
|
'clear-day' => :sun,
|
122
122
|
'clear-night' => :night_with_stars,
|
@@ -128,61 +128,61 @@ class MyWeatherForecast
|
|
128
128
|
'cloudy' => :cloud,
|
129
129
|
'partly-cloudy-day' => :sun_behind_cloud,
|
130
130
|
'partly-cloudy-night' => :cloud
|
131
|
-
}
|
132
|
-
|
131
|
+
}
|
132
|
+
|
133
133
|
Emoji2020.new(h[icon()]).to_s
|
134
|
-
|
134
|
+
|
135
135
|
end
|
136
|
-
|
136
|
+
|
137
137
|
def evening() period(17, night_time.hour+1) end
|
138
|
-
def morning() period(6, 12) end
|
139
|
-
def night() period(night_time.hour, 23) end
|
140
|
-
|
138
|
+
def morning() period(6, 12) end
|
139
|
+
def night() period(night_time.hour, 23) end
|
140
|
+
|
141
141
|
def night_time()
|
142
142
|
Time.at(@day.sunsetTime)
|
143
|
-
end
|
144
|
-
|
143
|
+
end
|
144
|
+
|
145
145
|
def humidity()
|
146
146
|
@x.humidity
|
147
147
|
end
|
148
|
-
|
148
|
+
|
149
149
|
def icon()
|
150
150
|
@x.icon
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
153
|
def noon()
|
154
154
|
at_hour 12
|
155
155
|
end
|
156
|
-
|
156
|
+
|
157
157
|
alias midday noon
|
158
158
|
|
159
159
|
def to_s
|
160
160
|
r = "%s: %d%s, %s" % [self.time.strftime("%-I%P"), @x.temperature.round, \
|
161
161
|
@tlabel, @x.summary]
|
162
|
-
r << ", %s" % [windspeed] if r[/windy|breezy/i]
|
162
|
+
r << ", %s" % [windspeed] if r[/windy|breezy/i]
|
163
163
|
r
|
164
164
|
end
|
165
165
|
|
166
166
|
def summary()
|
167
167
|
@x.summary
|
168
168
|
end
|
169
|
-
|
169
|
+
|
170
170
|
def sunrise()
|
171
171
|
@day.sunrise
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
def sunset()
|
175
175
|
@day.sunset
|
176
|
-
end
|
177
|
-
|
178
|
-
alias night_time sunset
|
179
|
-
|
176
|
+
end
|
177
|
+
|
178
|
+
alias night_time sunset
|
179
|
+
|
180
180
|
def temperature
|
181
181
|
"%s°" % @x.temperature.round
|
182
182
|
end
|
183
|
-
|
183
|
+
|
184
184
|
alias temp temperature
|
185
|
-
|
185
|
+
|
186
186
|
def time
|
187
187
|
Time.at @x.time
|
188
188
|
end
|
@@ -190,43 +190,43 @@ class MyWeatherForecast
|
|
190
190
|
def visibility()
|
191
191
|
@x.visibility
|
192
192
|
end
|
193
|
-
|
193
|
+
|
194
194
|
def windspeed()
|
195
195
|
"%s%s" % [@x.windSpeed.round, @speed_label]
|
196
196
|
end
|
197
|
-
|
197
|
+
|
198
198
|
private
|
199
|
-
|
199
|
+
|
200
200
|
def at_hour(n)
|
201
201
|
|
202
202
|
i = 0
|
203
203
|
|
204
|
-
return if Time.at(@hourly_data[i]['time']).hour > n
|
204
|
+
return if Time.at(@hourly_data[i]['time']).hour > n
|
205
205
|
len = @hourly_data.length
|
206
206
|
i += 1 until Time.at(@hourly_data[i]['time']).hour == n or i >= len - 1
|
207
207
|
|
208
208
|
Hourly.new(@forecast, @tlabel, i+@i)
|
209
209
|
end
|
210
|
-
|
210
|
+
|
211
211
|
def period(hr1, hr2)
|
212
|
-
|
213
|
-
current_hour = Time.at(@hourly_data[0]['time']).hour
|
214
|
-
|
212
|
+
|
213
|
+
current_hour = Time.at(@hourly_data[0]['time']).hour
|
214
|
+
|
215
215
|
return if current_hour >= hr2
|
216
|
-
|
216
|
+
|
217
217
|
hr1 = current_hour if current_hour > hr1
|
218
218
|
hr2 = @hourly_data.length - 2 if hr2 + 1 > @hourly_data.length - 1
|
219
219
|
(hr1..hr2).map {|n| at_hour n}
|
220
|
-
|
220
|
+
|
221
221
|
end
|
222
|
-
|
222
|
+
|
223
223
|
end
|
224
|
-
|
225
|
-
|
224
|
+
|
225
|
+
|
226
226
|
class Daily < Hourly
|
227
|
-
|
227
|
+
|
228
228
|
def initialize(forecast, tlabel, d=0)
|
229
|
-
|
229
|
+
|
230
230
|
@forecast = forecast
|
231
231
|
|
232
232
|
@x = forecast['daily']['data'][d]
|
@@ -235,51 +235,51 @@ class MyWeatherForecast
|
|
235
235
|
found = forecast['hourly']['data'].detect do |hour|
|
236
236
|
Time.at(@x.time).to_date == Time.at(hour.time).to_date
|
237
237
|
end
|
238
|
-
|
239
|
-
@i = forecast['hourly']['data'].index found
|
240
|
-
|
238
|
+
|
239
|
+
@i = forecast['hourly']['data'].index found
|
240
|
+
|
241
241
|
return if @i.nil?
|
242
242
|
|
243
243
|
@hourly_data = forecast['hourly']['data'][@i..-1]
|
244
244
|
@day = self
|
245
|
-
|
245
|
+
|
246
246
|
end
|
247
|
-
|
247
|
+
|
248
248
|
def day()
|
249
249
|
Date::ABBR_DAYNAMES[self.time.wday]
|
250
250
|
end
|
251
|
-
|
251
|
+
|
252
252
|
def to_s
|
253
|
-
|
254
|
-
label = self.time.to_date == Time.now.to_date ? 'Today' : day()
|
253
|
+
|
254
|
+
label = self.time.to_date == Time.now.to_date ? 'Today' : day()
|
255
255
|
mask = @symbols ? "%s: ▽%s ▲%s, %s" : "%s: %s %s, %s"
|
256
256
|
mask % [label, tempmin, tempmax, @x.summary]
|
257
|
-
|
257
|
+
|
258
258
|
end
|
259
|
-
|
259
|
+
|
260
260
|
def sunrise()
|
261
261
|
Time.at @x.sunriseTime
|
262
262
|
end
|
263
|
-
|
263
|
+
|
264
264
|
def sunset()
|
265
265
|
Time.at @x.sunsetTime
|
266
|
-
end
|
267
|
-
|
266
|
+
end
|
267
|
+
|
268
268
|
def temperature()
|
269
269
|
end
|
270
270
|
|
271
271
|
def tempmin
|
272
272
|
"%s°" % [@x.temperatureMin.round]
|
273
273
|
end
|
274
|
-
|
274
|
+
|
275
275
|
def tempmax
|
276
276
|
"%s°" % [@x.temperatureMax.round]
|
277
277
|
end
|
278
|
-
|
278
|
+
|
279
279
|
|
280
280
|
end
|
281
|
-
|
282
|
-
|
281
|
+
|
282
|
+
|
283
283
|
# e.g.
|
284
284
|
# require 'myweatherforecast'
|
285
285
|
#
|
@@ -295,32 +295,32 @@ class MyWeatherForecast
|
|
295
295
|
end
|
296
296
|
|
297
297
|
def hours()
|
298
|
-
|
298
|
+
|
299
299
|
len = @forecast['hourly']['data'].length
|
300
300
|
len.times.map {|i| Hourly.new @forecast, @tlabel, i}
|
301
301
|
|
302
302
|
end
|
303
|
-
|
303
|
+
|
304
304
|
def now()
|
305
305
|
Hourly.new(@forecast, @tlabel)
|
306
306
|
end
|
307
|
-
|
307
|
+
|
308
308
|
def today()
|
309
309
|
Daily.new(@forecast, @tlabel)
|
310
310
|
end
|
311
|
-
|
312
|
-
alias currently now
|
313
|
-
|
311
|
+
|
312
|
+
alias currently now
|
313
|
+
|
314
314
|
def tonight()
|
315
315
|
Daily.new(@forecast, @tlabel).night
|
316
316
|
end
|
317
|
-
|
317
|
+
|
318
318
|
alias this today
|
319
|
-
|
320
|
-
def tomorrow()
|
319
|
+
|
320
|
+
def tomorrow()
|
321
321
|
Daily.new(@forecast, @tlabel, 1)
|
322
|
-
end
|
323
|
-
|
322
|
+
end
|
323
|
+
|
324
324
|
def monday() day :monday end
|
325
325
|
def tuesday() day :tuesday end
|
326
326
|
def wednesday() day :wednesday end
|
@@ -328,7 +328,7 @@ class MyWeatherForecast
|
|
328
328
|
def friday() day :friday end
|
329
329
|
def saturday() day :saturday end
|
330
330
|
def sunday() day :sunday end
|
331
|
-
|
331
|
+
|
332
332
|
alias sat saturday
|
333
333
|
alias sun sunday
|
334
334
|
alias mon monday
|
@@ -336,31 +336,31 @@ class MyWeatherForecast
|
|
336
336
|
alias wed wednesday
|
337
337
|
alias thu thursday
|
338
338
|
alias fri friday
|
339
|
-
|
339
|
+
|
340
340
|
def next_3days()
|
341
|
-
|
341
|
+
|
342
342
|
days().take(4)[1..-1].map do |x|
|
343
|
-
"%s: %s - %s #{x.emoji} %s" % [x.time.strftime("%a"), x.tempmin,
|
343
|
+
"%s: %s - %s #{x.emoji} %s" % [x.time.strftime("%a"), x.tempmin,
|
344
344
|
x.tempmax, x.summary]
|
345
|
-
end.join("\n")
|
346
|
-
|
345
|
+
end.join("\n")
|
346
|
+
|
347
347
|
end
|
348
|
-
|
348
|
+
|
349
349
|
def next_5days()
|
350
|
-
|
350
|
+
|
351
351
|
days().take(6)[1..-1].map do |x|
|
352
|
-
"%s: %s %s" % [x.time.strftime("%a"), x.tempmax, x.summary]
|
352
|
+
"%s: %s %s" % [x.time.strftime("%a"), x.tempmax, x.summary]
|
353
353
|
end.join("\n")
|
354
354
|
|
355
|
-
end
|
355
|
+
end
|
356
356
|
|
357
357
|
private
|
358
|
-
|
358
|
+
|
359
359
|
def day(name)
|
360
|
-
|
360
|
+
|
361
361
|
name = (name.to_s + '?').to_sym
|
362
|
-
|
363
|
-
d = 0
|
362
|
+
|
363
|
+
d = 0
|
364
364
|
d += 1 until Time.at(@forecast['daily']['data'][d].time).method(name).call
|
365
365
|
Time.at(@forecast['daily']['data'][d].time)
|
366
366
|
Daily.new(@forecast, @tlabel, d)
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
)�V&�9�^Y�uDu��
|
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��!? 9�UD;�!?�(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.
|
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
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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:
|
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,22 +61,22 @@ 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.
|
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.
|
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
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: 0.2.1
|
100
100
|
description:
|
101
|
-
email:
|
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
|
-
|
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
|