lita-onewheel-forecast-io 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +1 -3
- data/README.md +1 -1
- data/lib/lita/handlers/constants.rb +8 -0
- data/lib/lita/handlers/forecasts.rb +61 -22
- data/lib/lita/handlers/irc_handlers.rb +22 -5
- data/lib/lita/handlers/onewheel_forecast_io.rb +9 -2
- data/lib/lita/handlers/utils.rb +1 -1
- data/lita-onewheel-forecast-io.gemspec +4 -4
- data/spec/lita/handlers/forecast_io_spec.rb +26 -13
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a1c34227a6fba45ea412b5129bcca4e12c7c090
|
4
|
+
data.tar.gz: d6e8c875355d3745874ddaa8a10e8354039e363c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61516507de3ce242843086104524b69e38885b7e2f482e02da40a6a9c02a92021c0c00ed5ec62bc6e6cd4b20305752d9486a7d8ecc50080c669b9bc1c5a5af74
|
7
|
+
data.tar.gz: fa6b2118a9c058a0cc3e6d164ddaf098661b1b76fa700f75a728659116441f176de1d80132cdb3a438ff1386754fd3b28f9b1fc79504463d0dc6722aeb837a19
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -11,7 +11,7 @@ This Lita handler takes location-based queries and returns interesting data abou
|
|
11
11
|
Add lita-onewheel-forecast-io to your Lita instance's Gemfile, from github since it's currently unpublished:
|
12
12
|
|
13
13
|
``` ruby
|
14
|
-
gem 'lita-onewheel-forecast-io',
|
14
|
+
gem 'lita-onewheel-forecast-io', '~> 0.0'
|
15
15
|
```
|
16
16
|
|
17
17
|
## Configuration
|
@@ -119,6 +119,14 @@ module ForecastIo
|
|
119
119
|
}
|
120
120
|
end
|
121
121
|
|
122
|
+
# Just a shorthand function to return the configured snowflake.
|
123
|
+
def get_snowman(config)
|
124
|
+
# '⛄' # Fancy emoji snowman
|
125
|
+
# '❄️' # Fancy snowflake
|
126
|
+
# '❄' # Regular snowflake
|
127
|
+
config.snowflake
|
128
|
+
end
|
129
|
+
|
122
130
|
# I have no use for these yet, and yet they're handy to know.
|
123
131
|
# def attributes
|
124
132
|
# { :bold => 2.chr,
|
@@ -1,32 +1,44 @@
|
|
1
1
|
module ForecastIo
|
2
2
|
module Forecasts
|
3
3
|
def ascii_rain_forecast(forecast)
|
4
|
-
str = do_the_rain_chance_thing(forecast, ascii_chars, 'precipProbability')
|
5
|
-
|
4
|
+
(str, precip_type) = do_the_rain_chance_thing(forecast, ascii_chars, 'precipProbability')
|
5
|
+
max = get_max_by_data_key(forecast, 'minutely', 'precipProbability')
|
6
|
+
"1hr #{precip_type} probability #{(Time.now).strftime('%H:%M').to_s}|#{str}|#{(Time.now + 3600).strftime('%H:%M').to_s} max #{max * 100}%"
|
6
7
|
end
|
7
8
|
|
8
9
|
def ansi_rain_forecast(forecast)
|
9
|
-
str = do_the_rain_chance_thing(forecast, ansi_chars, 'precipProbability') #, 'probability', get_rain_range_colors)
|
10
|
-
|
11
|
-
"
|
10
|
+
(str, precip_type) = do_the_rain_chance_thing(forecast, ansi_chars, 'precipProbability') #, 'probability', get_rain_range_colors)
|
11
|
+
max = get_max_by_data_key(forecast, 'minutely', 'precipProbability')
|
12
|
+
"1hr #{precip_type} probability #{(Time.now).strftime('%H:%M').to_s}|#{str}|#{(Time.now + 3600).strftime('%H:%M').to_s} max #{max.to_f * 100}%"
|
12
13
|
end
|
13
14
|
|
14
15
|
def ansi_rain_intensity_forecast(forecast)
|
15
|
-
str = do_the_rain_intensity_thing(forecast, ansi_chars, 'precipIntensity') #, 'probability', get_rain_range_colors)
|
16
|
-
|
16
|
+
(str, precip_type) = do_the_rain_intensity_thing(forecast, ansi_chars, 'precipIntensity') #, 'probability', get_rain_range_colors)
|
17
|
+
max_str = get_max_by_data_key(forecast, 'minutely', 'precipIntensity')
|
18
|
+
"1hr #{precip_type} intensity #{(Time.now).strftime('%H:%M').to_s}|#{str}|#{(Time.now + 3600).strftime('%H:%M').to_s} #{max_str}"
|
17
19
|
end
|
18
20
|
|
19
21
|
def ansi_humidity_forecast(forecast)
|
20
22
|
do_the_humidity_thing(forecast, ansi_chars, 'humidity') #, 'probability', get_rain_range_colors)
|
21
23
|
end
|
22
24
|
|
23
|
-
def
|
25
|
+
def get_max_by_data_key(forecast, key, datum)
|
24
26
|
unless forecast[key].nil?
|
25
27
|
data_points = []
|
26
28
|
forecast[key]['data'].each do |data_point|
|
27
|
-
data_points.push data_point[
|
29
|
+
data_points.push data_point[datum]
|
28
30
|
end
|
29
|
-
|
31
|
+
data_points.max
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_min_by_data_key(forecast, key, datum)
|
36
|
+
unless forecast[key].nil?
|
37
|
+
data_points = []
|
38
|
+
forecast[key]['data'].each do |data_point|
|
39
|
+
data_points.push data_point[datum]
|
40
|
+
end
|
41
|
+
data_points.min
|
30
42
|
end
|
31
43
|
end
|
32
44
|
|
@@ -55,7 +67,7 @@ module ForecastIo
|
|
55
67
|
if i_can_has_snow
|
56
68
|
data.each_with_index do |datum, index|
|
57
69
|
if datum['precipType'] == 'snow'
|
58
|
-
str[index] =
|
70
|
+
str[index] = get_snowman config
|
59
71
|
end
|
60
72
|
end
|
61
73
|
end
|
@@ -64,7 +76,9 @@ module ForecastIo
|
|
64
76
|
str = get_colored_string(data, key, str, get_rain_range_colors)
|
65
77
|
end
|
66
78
|
|
67
|
-
|
79
|
+
precip_type = i_can_has_snow ? 'snow' : 'rain'
|
80
|
+
|
81
|
+
return str, precip_type
|
68
82
|
end
|
69
83
|
|
70
84
|
def do_the_rain_intensity_thing(forecast, chars, key) #, type, range_colors = nil)
|
@@ -72,11 +86,15 @@ module ForecastIo
|
|
72
86
|
return 'No minute-by-minute data available.' # The "Middle of Nowhere" case.
|
73
87
|
end
|
74
88
|
|
89
|
+
i_can_has_snow = false
|
75
90
|
data_points = []
|
76
91
|
data = forecast['minutely']['data']
|
77
92
|
|
78
93
|
data.each do |datum|
|
79
94
|
data_points.push datum[key]
|
95
|
+
if datum['precipType'] == 'snow'
|
96
|
+
i_can_has_snow = true
|
97
|
+
end
|
80
98
|
end
|
81
99
|
|
82
100
|
# Fixed range graph- 0-0.11.
|
@@ -85,7 +103,10 @@ module ForecastIo
|
|
85
103
|
if config.colors
|
86
104
|
str = get_colored_string(data, key, str, get_rain_intensity_range_colors)
|
87
105
|
end
|
88
|
-
|
106
|
+
|
107
|
+
precip_type = i_can_has_snow ? 'snow' : 'rain'
|
108
|
+
|
109
|
+
return str, precip_type
|
89
110
|
end
|
90
111
|
|
91
112
|
def do_the_humidity_thing(forecast, chars, key) #, type, range_colors = nil)
|
@@ -166,7 +187,7 @@ module ForecastIo
|
|
166
187
|
return str, data_points
|
167
188
|
end
|
168
189
|
|
169
|
-
def do_the_sun_thing(forecast)
|
190
|
+
def do_the_sun_thing(forecast, chars)
|
170
191
|
key = 'cloudCover'
|
171
192
|
data_points = []
|
172
193
|
data = forecast['daily']['data']
|
@@ -178,22 +199,30 @@ module ForecastIo
|
|
178
199
|
|
179
200
|
differential = data_points.max - data_points.min
|
180
201
|
|
181
|
-
str = get_dot_str(
|
202
|
+
str = get_dot_str(chars, data, data_points.min, differential, key)
|
182
203
|
|
183
204
|
if config.colors
|
184
205
|
str = get_colored_string(data, key, str, get_sun_range_colors)
|
185
206
|
end
|
186
207
|
|
187
|
-
|
208
|
+
max = 1 - get_min_by_data_key(forecast, 'hourly', key)
|
209
|
+
|
210
|
+
"8 day sun forecast |#{str}| max #{(max * 100).to_i}%"
|
188
211
|
end
|
189
212
|
|
190
|
-
def do_the_cloud_thing(forecast)
|
213
|
+
def do_the_cloud_thing(forecast, chars)
|
191
214
|
# O ◎ ]
|
192
215
|
data = forecast['hourly']['data'].slice(0,23)
|
193
216
|
|
194
|
-
|
217
|
+
max = 0
|
218
|
+
data.each do |datum|
|
219
|
+
if datum['cloudCover'] > max
|
220
|
+
max = datum['cloudCover']
|
221
|
+
end
|
222
|
+
end
|
223
|
+
str = get_dot_str(chars, data, 0, 1, 'cloudCover')
|
195
224
|
|
196
|
-
"24h cloud cover |#{str}|"
|
225
|
+
"24h cloud cover |#{str}| max #{max * 100}%"
|
197
226
|
end
|
198
227
|
|
199
228
|
def do_the_sunrise_thing(forecast)
|
@@ -261,7 +290,9 @@ module ForecastIo
|
|
261
290
|
str = get_colored_string(data, 'precipProbability', str, get_rain_range_colors)
|
262
291
|
end
|
263
292
|
|
264
|
-
|
293
|
+
max = get_max_by_data_key(forecast, 'daily', 'precipProbability')
|
294
|
+
|
295
|
+
"7day #{precip_type}s |#{str}| max #{max * 100}%"
|
265
296
|
end
|
266
297
|
|
267
298
|
def do_the_daily_rain_thing(forecast)
|
@@ -278,13 +309,21 @@ module ForecastIo
|
|
278
309
|
|
279
310
|
str = get_dot_str(ansi_chars, data, 0, 1, 'precipProbability')
|
280
311
|
|
312
|
+
if 'snow' == precip_type
|
313
|
+
data.each_with_index do |datum, index|
|
314
|
+
if datum['precipType'] == 'snow'
|
315
|
+
str[index] = get_snowman config
|
316
|
+
end
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
281
320
|
if config.colors
|
282
321
|
str = get_colored_string(data, 'precipProbability', str, get_rain_range_colors)
|
283
322
|
end
|
284
323
|
|
285
|
-
|
324
|
+
max = get_max_by_data_key(forecast, 'hourly', 'precipProbability')
|
286
325
|
|
287
|
-
"48 hr #{precip_type}s |#{str}| #{
|
326
|
+
"48 hr #{precip_type}s |#{str}| max #{max.to_f * 100}%"
|
288
327
|
end
|
289
328
|
|
290
329
|
def do_the_daily_wind_thing(forecast)
|
@@ -27,8 +27,8 @@ module ForecastIo
|
|
27
27
|
response.reply location.location_name + ' ' + ansi_rain_intensity_forecast(forecast)
|
28
28
|
response.reply location.location_name + ' ' + ansi_temp_forecast(forecast)
|
29
29
|
response.reply location.location_name + ' ' + ansi_wind_direction_forecast(forecast)
|
30
|
-
response.reply location.location_name + ' ' + do_the_sun_thing(forecast)
|
31
|
-
response.reply location.location_name + ' ' + do_the_cloud_thing(forecast)
|
30
|
+
response.reply location.location_name + ' ' + do_the_sun_thing(forecast, ansi_chars)
|
31
|
+
response.reply location.location_name + ' ' + do_the_cloud_thing(forecast, ansi_chars)
|
32
32
|
response.reply location.location_name + ' ' + do_the_daily_rain_thing(forecast)
|
33
33
|
end
|
34
34
|
|
@@ -84,13 +84,25 @@ module ForecastIo
|
|
84
84
|
def handle_irc_ansisun(response)
|
85
85
|
location = geo_lookup(response.user, response.match_data[1])
|
86
86
|
forecast = get_forecast_io_results(response.user, location)
|
87
|
-
response.reply location.location_name + ' ' + do_the_sun_thing(forecast)
|
87
|
+
response.reply location.location_name + ' ' + do_the_sun_thing(forecast, ansi_chars)
|
88
|
+
end
|
89
|
+
|
90
|
+
def handle_irc_asciisun(response)
|
91
|
+
location = geo_lookup(response.user, response.match_data[1])
|
92
|
+
forecast = get_forecast_io_results(response.user, location)
|
93
|
+
response.reply location.location_name + ' ' + do_the_sun_thing(forecast, ascii_chars)
|
88
94
|
end
|
89
95
|
|
90
96
|
def handle_irc_ansicloud(response)
|
91
97
|
location = geo_lookup(response.user, response.match_data[1])
|
92
98
|
forecast = get_forecast_io_results(response.user, location)
|
93
|
-
response.reply location.location_name + ' ' + do_the_cloud_thing(forecast)
|
99
|
+
response.reply location.location_name + ' ' + do_the_cloud_thing(forecast, ansi_chars)
|
100
|
+
end
|
101
|
+
|
102
|
+
def handle_irc_asciicloud(response)
|
103
|
+
location = geo_lookup(response.user, response.match_data[1])
|
104
|
+
forecast = get_forecast_io_results(response.user, location)
|
105
|
+
response.reply location.location_name + ' ' + do_the_cloud_thing(forecast, ascii_chars)
|
94
106
|
end
|
95
107
|
|
96
108
|
def handle_irc_seven_day(response)
|
@@ -171,7 +183,12 @@ module ForecastIo
|
|
171
183
|
forecast = get_forecast_io_results(response.user, location)
|
172
184
|
nearest_storm_distance, nearest_storm_bearing = do_the_nearest_storm_thing(forecast)
|
173
185
|
|
174
|
-
|
186
|
+
if nearest_storm_distance == 0
|
187
|
+
response.reply "You're in it!"
|
188
|
+
else
|
189
|
+
response.reply "The nearest storm is #{get_distance(nearest_storm_distance, get_scale(response.user))} to the #{get_cardinal_direction_from_bearing(nearest_storm_bearing)} of you."
|
190
|
+
end
|
191
|
+
|
175
192
|
end
|
176
193
|
end
|
177
194
|
end
|
@@ -13,6 +13,7 @@ module Lita
|
|
13
13
|
config :api_key
|
14
14
|
config :api_uri
|
15
15
|
config :colors
|
16
|
+
config :snowflake, default: '❄'
|
16
17
|
|
17
18
|
include ::ForecastIo::Constants
|
18
19
|
include ::ForecastIo::IrcHandlers
|
@@ -120,6 +121,9 @@ module Lita
|
|
120
121
|
route(/^ansisun\s*$/i, :handle_irc_ansisun)
|
121
122
|
route(/^ansisun\s+(.+)/i, :handle_irc_ansisun,
|
122
123
|
help: { '!ansisun [location]' => '7 day chance-of-sun report for [location].'})
|
124
|
+
route(/^asciisun\s*$/i, :handle_irc_asciisun)
|
125
|
+
route(/^asciisun\s+(.+)/i, :handle_irc_asciisun,
|
126
|
+
help: { '!asciisun [location]' => '7 day chance-of-sun report for [location].'})
|
123
127
|
|
124
128
|
# Mun!
|
125
129
|
|
@@ -135,8 +139,11 @@ module Lita
|
|
135
139
|
help: { '!dailywind [location]' => '7 day wind speed/direction report for [location].'})
|
136
140
|
|
137
141
|
# Cloud cover
|
138
|
-
route(/^
|
139
|
-
route(/^
|
142
|
+
route(/^asciiclouds*\s+(.+)/i, :handle_irc_asciicloud)
|
143
|
+
route(/^asciiclouds*\s*$/i, :handle_irc_asciicloud,
|
144
|
+
help: { '!asciicloud [location]' => '24h cloud cover report for [location].'})
|
145
|
+
route(/^ansiclouds*\s*$/i, :handle_irc_ansicloud)
|
146
|
+
route(/^ansiclouds*\s+(.+)/i, :handle_irc_ansicloud,
|
140
147
|
help: { '!ansicloud [location]' => '24h cloud cover report for [location].'})
|
141
148
|
|
142
149
|
# oooOOOoooo
|
data/lib/lita/handlers/utils.rb
CHANGED
@@ -138,7 +138,7 @@ module ForecastIo
|
|
138
138
|
def get_forecast_io_results(user, location)
|
139
139
|
if ! config.api_uri or ! config.api_key
|
140
140
|
Lita.logger.error "Configuration missing! '#{config.api_uri}' '#{config.api_key}'"
|
141
|
-
|
141
|
+
raise StandardError.new('Configuration missing!')
|
142
142
|
end
|
143
143
|
uri = config.api_uri + config.api_key + '/' + "#{location.latitude},#{location.longitude}"
|
144
144
|
Lita.logger.debug uri
|
@@ -1,12 +1,12 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = 'lita-onewheel-forecast-io'
|
3
|
-
spec.version = '0.0.
|
3
|
+
spec.version = '0.0.1'
|
4
4
|
spec.authors = ['Andrew Kreps']
|
5
5
|
spec.email = ['andrew.kreps@gmail.com']
|
6
6
|
spec.description = <<-EOS
|
7
|
-
A rather different take on the weather.
|
8
|
-
!ansirain Portland, OR 97206, USA rain probability 21:30|████████████████████████████████████▇▇▇▇▇▇▇▇▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅|22:30 max 100%
|
9
|
-
!dailyrain Portland, OR 97206, USA 48 hr rains |▇▇▇▅▅▅▅▃▅▅▃▃▃▃▅▇▇▇▇▇▅▅▁▁▁▁▁______▁▁▁▁▁▁▁▁▁▃▃▃▁▁▁▁| max 59.0%
|
7
|
+
A rather different take on the weather. <br/>
|
8
|
+
!ansirain Portland, OR 97206, USA rain probability 21:30|████████████████████████████████████▇▇▇▇▇▇▇▇▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅|22:30 max 100% <br/>
|
9
|
+
!dailyrain Portland, OR 97206, USA 48 hr rains |▇▇▇▅▅▅▅▃▅▅▃▃▃▃▅▇▇▇▇▇▅▅▁▁▁▁▁______▁▁▁▁▁▁▁▁▁▃▃▃▁▁▁▁| max 59.0% <br/>
|
10
10
|
!ansitemp Portland, OR 97206, USA 24 hr temps: 8.44°C |▅▅▅▅▃▃▁_▁▁▅▅▇█████▇▅▅▃▁| 6.17°C Range: 5.89°C - 12.17°C
|
11
11
|
EOS
|
12
12
|
spec.summary = %q{A text-based interactive query engine for http://forecast.io's api.}
|
@@ -30,7 +30,10 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
30
30
|
it { is_expected.to route('ansiwind') }
|
31
31
|
it { is_expected.to route('asciiwind') }
|
32
32
|
it { is_expected.to route('ansisun') }
|
33
|
+
it { is_expected.to route('asciisun') }
|
34
|
+
it { is_expected.to route('asciicloud') }
|
33
35
|
it { is_expected.to route('ansicloud') }
|
36
|
+
it { is_expected.to route('ansiclouds') }
|
34
37
|
it { is_expected.to route('asciitemp') }
|
35
38
|
it { is_expected.to route('asciirain') }
|
36
39
|
it { is_expected.to route('7day') }
|
@@ -125,12 +128,12 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
125
128
|
|
126
129
|
it '!ansirain Paris' do
|
127
130
|
send_message 'ansirain Paris'
|
128
|
-
expect(replies.last).to include("|\u000302_
|
131
|
+
expect(replies.last).to include("|\u000302_❄\u000306▃\u000310▅\u000303▅\u000309▅\u000311▇\u000308▇\u000307█\u000304█\u000313█\u000302__________________________________________________\u0003|")
|
129
132
|
end
|
130
133
|
|
131
134
|
it '!ansirain return max chance' do
|
132
135
|
send_message 'ansirain Paris'
|
133
|
-
expect(replies.last).to include('max 100%')
|
136
|
+
expect(replies.last).to include('max 100.0%')
|
134
137
|
end
|
135
138
|
|
136
139
|
it '!ansirain no minutes' do
|
@@ -147,7 +150,7 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
147
150
|
|
148
151
|
it '!ansisnow Paris' do
|
149
152
|
send_message 'ansisnow Paris'
|
150
|
-
expect(replies.last).to include("|\u000302_
|
153
|
+
expect(replies.last).to include("|\u000302_❄\u000306▃\u000310▅\u000303▅\u000309▅\u000311▇\u000308▇\u000307█\u000304█\u000313█\u000302__________________________________________________\u0003|")
|
151
154
|
end
|
152
155
|
|
153
156
|
it '!ansiintensity' do
|
@@ -172,7 +175,7 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
172
175
|
|
173
176
|
it '!conditions' do
|
174
177
|
send_message 'conditions'
|
175
|
-
expect(replies.last).to eq("Portland, OR 28.3°F |\u000306_▁▃\u000310▅▇█\u000303█\u0003| 38.72°F / 4.3 mph |\u000306↓\u000310↙←\u000311↖↑↗\u000308→\u0003| 12.71 mph / 98% chance of sun / 60m precip |\u000306
|
178
|
+
expect(replies.last).to eq("Portland, OR 28.3°F |\u000306_▁▃\u000310▅▇█\u000303█\u0003| 38.72°F / 4.3 mph |\u000306↓\u000310↙←\u000311↖↑↗\u000308→\u0003| 12.71 mph / 98% chance of sun / 60m precip |\u000306❄\u000311▇\u000308▇\u000302_____________\u0003|")
|
176
179
|
end
|
177
180
|
|
178
181
|
it '!alerts' do
|
@@ -182,12 +185,22 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
182
185
|
|
183
186
|
it '!ansisun' do
|
184
187
|
send_message 'ansisun'
|
185
|
-
expect(replies.last).to eq("Portland, OR 8 day sun forecast |\u000308█\u000309▃\u000308▇\u000309▁_\u000307▅\u000309▃\u000307▅\u0003|")
|
188
|
+
expect(replies.last).to eq("Portland, OR 8 day sun forecast |\u000308█\u000309▃\u000308▇\u000309▁_\u000307▅\u000309▃\u000307▅\u0003| max 100%")
|
189
|
+
end
|
190
|
+
|
191
|
+
it '!asciisun' do
|
192
|
+
send_message 'asciisun'
|
193
|
+
expect(replies.last).to eq("Portland, OR 8 day sun forecast |\u000308'\u000309-\u000308*\u000309._\u000307~\u000309-\u000307~\u0003| max 100%")
|
186
194
|
end
|
187
195
|
|
188
196
|
it '!ansicloud' do
|
189
197
|
send_message 'ansicloud'
|
190
|
-
expect(replies.last).to eq('Portland, OR 24h cloud cover |___________▁▁▁▁▁▁▁▁▃▅▅▅|')
|
198
|
+
expect(replies.last).to eq('Portland, OR 24h cloud cover |___________▁▁▁▁▁▁▁▁▃▅▅▅| max 49.0%')
|
199
|
+
end
|
200
|
+
|
201
|
+
it '!asciicloud' do
|
202
|
+
send_message 'asciicloud'
|
203
|
+
expect(replies.last).to eq('Portland, OR 24h cloud cover |___________........-~~~| max 49.0%')
|
191
204
|
end
|
192
205
|
|
193
206
|
it '!asciitemp' do
|
@@ -197,7 +210,7 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
197
210
|
|
198
211
|
it '!asciirain' do
|
199
212
|
send_message 'asciirain'
|
200
|
-
expect(replies.last).to include("|\u000302_
|
213
|
+
expect(replies.last).to include("|\u000302_❄\u000306-\u000310~\u000303~\u000309~\u000311*\u000308*\u000307'\u000304'\u000313'\u000302__________________________________________________\u0003|")
|
201
214
|
end
|
202
215
|
|
203
216
|
it '!7day' do
|
@@ -207,12 +220,12 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
207
220
|
|
208
221
|
it '!dailyrain' do
|
209
222
|
send_message 'dailyrain'
|
210
|
-
expect(replies.last).to eq("Portland, OR 48 hr snows |\u000302_______________________
|
223
|
+
expect(replies.last).to eq("Portland, OR 48 hr snows |\u000302_______________________❄❄❄❄▁▁▁▁▁▁▁▁▁▁▁▁▁❄❄❄❄❄❄❄❄_\u0003| max 4.0%")
|
211
224
|
end
|
212
225
|
|
213
226
|
it '!7dayrain' do
|
214
227
|
send_message '7dayrain'
|
215
|
-
expect(replies.last).to eq("Portland, OR 7day snows |\u000302_▁▁\u000306▃\u000313█\u000303▅▅\u000310▃\u0003|")
|
228
|
+
expect(replies.last).to eq("Portland, OR 7day snows |\u000302_▁▁\u000306▃\u000313█\u000303▅▅\u000310▃\u0003| max 100%")
|
216
229
|
end
|
217
230
|
|
218
231
|
it '!ansiozone' do
|
@@ -314,13 +327,13 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
|
|
314
327
|
it '!forecastallthethings' do
|
315
328
|
send_message 'forecastallthethings'
|
316
329
|
expect(replies[0]).to eq("Portland, OR weather is currently 28.39°F and clear. Winds out of the E at 5.74 mph. It will be clear for the hour, and flurries tomorrow morning. There are also 357.71 ozones.")
|
317
|
-
expect(replies[1]).to include("|\u000302_
|
330
|
+
expect(replies[1]).to include("|\u000302_❄\u000306▃\u000310▅\u000303▅\u000309▅\u000311▇\u000308▇\u000307█\u000304█\u000313█\u000302__________________________________________________\u0003|")
|
318
331
|
expect(replies[2]).to include("|\u000302_\u000313▅\u000310▁\u000303▃\u000309▃\u000311▃\u000308▅\u000307▅\u000304▅\u000313▅\u000302___________________________________________________\u0003|")
|
319
332
|
expect(replies[3]).to eq("Portland, OR 24 hr temps: 28.3°F |\u000306_▁▃\u000310▅▇█\u000303██\u000310██▇▅\u000306▅▃▃▃▃▃▃▁▁▁▁\u0003| 28.4°F Range: 28.3°F - 39.0°F")
|
320
333
|
expect(replies[4]).to eq("Portland, OR 48h wind direction 4.3 mph|\u000306↓\u000310↙←\u000311↖↑↗\u000308→↘\u000311↓←←←←←←\u000310←←←←←←←\u000306←←←←←\u000302←←←↙↙↙↙↓↓↓\u000306↓↓↓↓↓↓↓↓↙↙\u0003|4.18 mph Range: 1.39 mph - 12.71 mph")
|
321
|
-
expect(replies[5]).to eq("Portland, OR 8 day sun forecast |\u000308█\u000309▃\u000308▇\u000309▁_\u000307▅\u000309▃\u000307▅\u0003|")
|
322
|
-
expect(replies[6]).to eq("Portland, OR 24h cloud cover |___________▁▁▁▁▁▁▁▁▃▅▅▅|")
|
323
|
-
expect(replies[7]).to eq("Portland, OR 48 hr snows |\u000302_______________________
|
334
|
+
expect(replies[5]).to eq("Portland, OR 8 day sun forecast |\u000308█\u000309▃\u000308▇\u000309▁_\u000307▅\u000309▃\u000307▅\u0003| max 100%")
|
335
|
+
expect(replies[6]).to eq("Portland, OR 24h cloud cover |___________▁▁▁▁▁▁▁▁▃▅▅▅| max 49.0%")
|
336
|
+
expect(replies[7]).to eq("Portland, OR 48 hr snows |\u000302_______________________❄❄❄❄▁▁▁▁▁▁▁▁▁▁▁▁▁❄❄❄❄❄❄❄❄_\u0003| max 4.0%")
|
324
337
|
end
|
325
338
|
|
326
339
|
it '!ansipressure' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-onewheel-forecast-io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kreps
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -165,9 +165,9 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0.0'
|
167
167
|
description: |2
|
168
|
-
A rather different take on the weather.
|
169
|
-
!ansirain Portland, OR 97206, USA rain probability 21:30|████████████████████████████████████▇▇▇▇▇▇▇▇▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅|22:30 max 100%
|
170
|
-
!dailyrain Portland, OR 97206, USA 48 hr rains |▇▇▇▅▅▅▅▃▅▅▃▃▃▃▅▇▇▇▇▇▅▅▁▁▁▁▁______▁▁▁▁▁▁▁▁▁▃▃▃▁▁▁▁| max 59.0%
|
168
|
+
A rather different take on the weather. <br/>
|
169
|
+
!ansirain Portland, OR 97206, USA rain probability 21:30|████████████████████████████████████▇▇▇▇▇▇▇▇▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅|22:30 max 100% <br/>
|
170
|
+
!dailyrain Portland, OR 97206, USA 48 hr rains |▇▇▇▅▅▅▅▃▅▅▃▃▃▃▅▇▇▇▇▇▅▅▁▁▁▁▁______▁▁▁▁▁▁▁▁▁▃▃▃▁▁▁▁| max 59.0% <br/>
|
171
171
|
!ansitemp Portland, OR 97206, USA 24 hr temps: 8.44°C |▅▅▅▅▃▃▁_▁▁▅▅▇█████▇▅▅▃▁| 6.17°C Range: 5.89°C - 12.17°C
|
172
172
|
email:
|
173
173
|
- andrew.kreps@gmail.com
|