myweatherforecast 1.0.5 → 1.0.6
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.
- 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
|