lita-onewheel-baileys 2.1.1 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lita/handlers/onewheel_baileys.rb +86 -25
- data/lita-onewheel-baileys.gemspec +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b316f12fc72ca113a653bfdec42fa311cd96ee61
|
4
|
+
data.tar.gz: 40e257ea10470f1cc1e479f943a88f990df8f1f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55a0a6e7627750aa09e5f52533b9aa4a4020b60f6ca861e9b20f6980f74b2509bc9353aedc81fb6242b6d590fa413a47e76ce63f3929c7c2d3e32348659ab3ae
|
7
|
+
data.tar.gz: efb2751802ef05fd33b61b858c24e0ac9820005edc6122bd99c29e8a56c428ea612b12bfb9049edb32c7008547b9aae9677bacda38dcb5a9833851c89f8eb83f
|
@@ -20,6 +20,11 @@ module Lita
|
|
20
20
|
command: true,
|
21
21
|
help: {'taps >4%' => 'Display beers over 4% ABV.'}
|
22
22
|
|
23
|
+
route /^taps ([<>\$\w.]+)$/i,
|
24
|
+
:taps_by_price,
|
25
|
+
command: true,
|
26
|
+
help: {'taps <$5' => 'Display beers under $5.'}
|
27
|
+
|
23
28
|
def taps_list(response)
|
24
29
|
beers = get_baileys
|
25
30
|
reply = "Bailey's taps: "
|
@@ -66,6 +71,27 @@ module Lita
|
|
66
71
|
end
|
67
72
|
end
|
68
73
|
|
74
|
+
def taps_by_price(response)
|
75
|
+
beers = get_baileys
|
76
|
+
beers.each do |tap, datum|
|
77
|
+
if datum[:abv].to_f == 0.0
|
78
|
+
next
|
79
|
+
end
|
80
|
+
query = response.matches[0][0].strip
|
81
|
+
# Search directly by tap number OR full text match.
|
82
|
+
if (abv_matches = query.match(/([><])(\d+\.*\d*)/))
|
83
|
+
direction = abv_matches.to_s.match(/[<>]/).to_s
|
84
|
+
abv_requested = abv_matches.to_s.match(/\d+.*\d*/).to_s
|
85
|
+
if direction == '>' and datum[:abv].to_f >= abv_requested.to_f
|
86
|
+
send_response(tap, datum, response)
|
87
|
+
end
|
88
|
+
if direction == '<' and datum[:abv].to_f <= abv_requested.to_f
|
89
|
+
send_response(tap, datum, response)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
69
95
|
def send_response(tap, datum, response)
|
70
96
|
reply = "Bailey's tap #{tap}) "
|
71
97
|
reply += "#{datum[:brewery]} "
|
@@ -86,36 +112,24 @@ module Lita
|
|
86
112
|
def parse_response(response)
|
87
113
|
gimme_what_you_got = {}
|
88
114
|
noko = Nokogiri.HTML response
|
89
|
-
noko.css('div#boxfielddata').each do |
|
115
|
+
noko.css('div#boxfielddata').each do |beer_node|
|
90
116
|
# gimme_what_you_got
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
brewery.gsub! /RBBA/, ''
|
99
|
-
brewery.strip!
|
100
|
-
end
|
101
|
-
beer_name = m.css('span i').first.children.to_s
|
102
|
-
if beer_desc_matchdata = m.to_s.gsub(/\n/, '').match(/(<br\s*\/*>)(.+%) /)
|
103
|
-
beer_desc = beer_desc_matchdata[2].gsub(/\s+/, ' ').strip
|
104
|
-
if (abv_matches = beer_desc.match(/\d+\.\d+%/))
|
105
|
-
# Lita.logger.info "#{abv_matches.inspect}"
|
106
|
-
abv = abv_matches.to_s.sub '%', ''
|
107
|
-
end
|
108
|
-
end
|
109
|
-
prices_str = m.css('div#prices').children.to_s.strip
|
110
|
-
prices = Sanitize.clean(prices_str).gsub(/We're Sorry/, '').gsub(/Inventory Restriction/, '').gsub(/Inventory Failure/, '').gsub('Success!', '').gsub(/\s+/, ' ').strip
|
117
|
+
tap = get_tap_name(beer_node)
|
118
|
+
remaining = beer_node.attributes['title']
|
119
|
+
|
120
|
+
brewery = get_brewery(beer_node)
|
121
|
+
beer_name = beer_node.css('span i').first.children.to_s
|
122
|
+
beer_desc = get_beer_desc(beer_node)
|
123
|
+
abv = get_abv(beer_desc)
|
111
124
|
full_text_search = "#{tap.sub /\d+/, ''} #{brewery} #{beer_name} #{beer_desc.to_s.gsub /\d+\.*\d*%*/, ''}"
|
125
|
+
prices = get_prices(beer_node)
|
112
126
|
|
113
127
|
gimme_what_you_got[tap] = {
|
114
128
|
remaining: remaining,
|
115
129
|
brewery: brewery.to_s,
|
116
|
-
name: beer_name,
|
130
|
+
name: beer_name.to_s,
|
117
131
|
desc: beer_desc.to_s,
|
118
|
-
abv: abv,
|
132
|
+
abv: abv.to_f,
|
119
133
|
prices: prices,
|
120
134
|
search: full_text_search
|
121
135
|
}
|
@@ -123,8 +137,55 @@ module Lita
|
|
123
137
|
gimme_what_you_got
|
124
138
|
end
|
125
139
|
|
126
|
-
def
|
127
|
-
|
140
|
+
def get_abv(beer_desc)
|
141
|
+
if (abv_matches = beer_desc.match(/\d+\.\d+%/))
|
142
|
+
abv_matches.to_s.sub '%', ''
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
# Return the desc of the beer, "Amber ale 6.9%"
|
147
|
+
def get_beer_desc(noko)
|
148
|
+
beer_desc = ''
|
149
|
+
if (beer_desc_matchdata = noko.to_s.gsub(/\n/, '').match(/(<br\s*\/*>)(.+%) /))
|
150
|
+
beer_desc = beer_desc_matchdata[2].gsub(/\s+/, ' ').strip
|
151
|
+
end
|
152
|
+
beer_desc
|
153
|
+
end
|
154
|
+
|
155
|
+
# Get the brewery from the node, return it or blank.
|
156
|
+
def get_brewery(noko)
|
157
|
+
brewery = ''
|
158
|
+
if (node = noko.css('span a').first)
|
159
|
+
brewery = node.children.to_s.gsub(/\n/, '')
|
160
|
+
brewery.gsub! /RBBA/, ''
|
161
|
+
brewery.strip!
|
162
|
+
end
|
163
|
+
brewery
|
164
|
+
end
|
165
|
+
|
166
|
+
# Returns ...
|
167
|
+
# There are a bunch of hidden html fields that get stripped after sanitize.
|
168
|
+
def get_prices(noko)
|
169
|
+
prices_str = noko.css('div#prices').children.to_s.strip
|
170
|
+
Sanitize.clean(prices_str)
|
171
|
+
.gsub(/We're Sorry/, '')
|
172
|
+
.gsub(/Inventory Restriction/, '')
|
173
|
+
.gsub(/Inventory Failure/, '')
|
174
|
+
.gsub('Success!', '')
|
175
|
+
.gsub(/\s+/, ' ')
|
176
|
+
.strip
|
177
|
+
end
|
178
|
+
|
179
|
+
# Returns 1, 2, Cask 3, Nitro 4...
|
180
|
+
def get_tap_name(noko)
|
181
|
+
noko.css('span')
|
182
|
+
.first
|
183
|
+
.children
|
184
|
+
.first
|
185
|
+
.to_s
|
186
|
+
.match(/[\w ]+\:/)
|
187
|
+
.to_s
|
188
|
+
.sub(/\:$/, '')
|
128
189
|
end
|
129
190
|
|
130
191
|
Lita.register_handler(self)
|