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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3180b28c97733c5b03fe50e0ad25e17b65ca0026
4
- data.tar.gz: 0ab8c248de33f971bf91b6662e9cc334fdc50790
3
+ metadata.gz: b316f12fc72ca113a653bfdec42fa311cd96ee61
4
+ data.tar.gz: 40e257ea10470f1cc1e479f943a88f990df8f1f0
5
5
  SHA512:
6
- metadata.gz: a6623fd2c7a86ab17a06e1d06ffbd730727a82fe5a57d977a6d3a7ee83d4e46e3fea389147707ec80934d27d54e38d4e04729981b57559aa5edec353709af27f
7
- data.tar.gz: 44973b2e4dffb3c53d0c6ca82d7eeba2d772f1267684a0f946b9c234a8ff6fe77d89abd0015a186aa58ccfea60b64f882c8dac35434610fdd294aa91827a6a6a
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 |m|
115
+ noko.css('div#boxfielddata').each do |beer_node|
90
116
  # gimme_what_you_got
91
- tap_info = {}
92
- # Lita.logger.info "span first: #{m.css('span').first}"
93
- tap = get_tap_name(m)
94
- remaining = m.attributes['title']
95
- # Lita.logger.info "brewery first: #{m.css('span a').first}"
96
- if m.css('span a').first
97
- brewery = m.css('span a').first.children.to_s.gsub(/\n/, '')
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 get_tap_name(m)
127
- m.css('span').first.children.first.to_s.match(/[\w ]+\:/).to_s.sub /\:$/, ''
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)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-onewheel-baileys'
3
- spec.version = '2.1.1'
3
+ spec.version = '2.1.2'
4
4
  spec.authors = ['Andrew Kreps']
5
5
  spec.email = ['andrew.kreps@gmail.com']
6
6
  spec.description = %q{Lita interface to Bailey's Taproom listings.}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-onewheel-baileys
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kreps