lib/lita/handlers/onewheel_election_cnn.rb in lita-onewheel-election-cnn-5.1.0 vs lib/lita/handlers/onewheel_election_cnn.rb in lita-onewheel-election-cnn-5.1.1

- old
+ new

@@ -26,44 +26,21 @@ results = JSON.parse(RestClient.get('http://data.cnn.com/ELECTION/2016/full/P.full.json')) response.reply "\x0300United States 2016 Presidential Election, #{results['races'][0]['pctsrep']}% reporting." votes = {'blue' => {}, 'red' => {}} results['candidates'].each do |candidate| - if candidate['lname'] == 'Clinton' - votes['blue']['percentage'] = candidate['pctDecimal'] - votes['blue']['popular'] = candidate['cvotes'] - votes['blue']['electoral'] = candidate['evotes'] - votes['blue']['winner'] = candidate['winner'] - end - - if candidate['lname'] == 'Trump' - votes['red']['percentage'] = candidate['pctDecimal'] - votes['red']['popular'] = candidate['cvotes'] - votes['red']['electoral'] = candidate['evotes'] - votes['red']['winner'] = candidate['winner'] - end + votes = get_reds_and_blues(candidate, votes) end blueredstr = get_blueredstr(votes) - response.reply "\x0300Clinton #{votes['blue']['percentage']}% #{votes['blue']['popular']} |#{blueredstr}\x0300| Trump #{votes['red']['percentage']}% #{votes['red']['popular']}" + reply = "\x0300Clinton #{votes['blue']['percentage']}% #{votes['blue']['popular']} |#{blueredstr}\x0300| Trump #{votes['red']['percentage']}% #{votes['red']['popular']}" + Lita.logger.debug reply + response.reply reply ansielection(response, results) end - def get_blueredstr(votes) - bluecount = (votes['blue']['percentage'].to_f / 2).to_i - redcount = (votes['red']['percentage'].to_f / 2).to_i - - blueredstr = "\x0312" - bluecount.times { blueredstr += '█' } - blueredstr += "\x0300" - (50 - bluecount - redcount).times { blueredstr += '-' } - blueredstr += "\x0304" - redcount.times { blueredstr += '█' } - blueredstr - end - def election_by_state(response) Lita.logger.debug 'get_source started' results = JSON.parse(RestClient.get('http://data.cnn.com/ELECTION/2016/full/P.full.json')) state = stateness(response.matches[0][0]) @@ -73,31 +50,81 @@ if race['state'].downcase == state.downcase state_reply = "\x0300#{state}, #{race['evotes']} electoral votes, #{race['pctsrep']}% reporting" response.reply state_reply Lita.logger.debug "Replying with #{state_reply}" race['candidates'].each do |candidate| - if candidate['lname'] == 'Clinton' - votes['blue']['percentage'] = candidate['pctDecimal'] - votes['blue']['popular'] = candidate['cvotes'] - votes['blue']['electoral'] = candidate['evotes'] - votes['blue']['winner'] = candidate['winner'] - end - - if candidate['lname'] == 'Trump' - votes['red']['percentage'] = candidate['pctDecimal'] - votes['red']['popular'] = candidate['cvotes'] - votes['red']['electoral'] = candidate['evotes'] - votes['red']['winner'] = candidate['winner'] - end + votes = get_reds_and_blues(candidate, votes) end blueredstr = get_blueredstr(votes) - response.reply "\x0300Clinton #{(votes['blue']['winner'] == true)? ' WINNER! ' : '' }#{votes['blue']['percentage']}% #{votes['blue']['popular']} |#{blueredstr}\x0300| Trump #{votes['red']['percentage']}% #{votes['red']['popular']}" + reply = "\x0300Clinton #{(votes['blue']['winner'] == true) ? ' WINNER! ' : '' }#{votes['blue']['percentage']}% #{votes['blue']['popular']} |#{blueredstr}\x0300| Trump #{votes['red']['percentage']}% #{votes['red']['popular']}" + Lita.logger.debug reply + response.reply reply end end end + def ansielection(response, results) + reds = 0 + blues = 0 + results['candidates'].each do |candidate| + if candidate['lname'] == 'Clinton' + blues = candidate['evotes'] + end + if candidate['lname'] == 'Trump' + reds = candidate['evotes'] + end + end + + reply = '' + extras = 54 - (blues / 10) - (reds / 10) + reply += "\x0312" + (blues / 10).times { reply += '█' } + reply += "\x0300" + extras.times { reply += '-'} + reply += "\x0304" + (reds / 10).times { reply += '█' } + + reply.insert((reply.length / 2) + 3, "👽") + + reply = "\x0300Clinton #{blues} |" + reply + "\x0300| Trump #{reds}" + + Lita.logger.debug reply + response.reply reply + end + + def get_reds_and_blues(candidate, votes) + if candidate['lname'] == 'Clinton' + votes['blue']['percentage'] = candidate['pctDecimal'] + votes['blue']['popular'] = candidate['cvotes'] + votes['blue']['electoral'] = candidate['evotes'] + votes['blue']['winner'] = candidate['winner'] + end + + if candidate['lname'] == 'Trump' + votes['red']['percentage'] = candidate['pctDecimal'] + votes['red']['popular'] = candidate['cvotes'] + votes['red']['electoral'] = candidate['evotes'] + votes['red']['winner'] = candidate['winner'] + end + + votes + end + + def get_blueredstr(votes) + bluecount = (votes['blue']['percentage'].to_f / 2).to_i + redcount = (votes['red']['percentage'].to_f / 2).to_i + + blueredstr = "\x0312" + bluecount.times { blueredstr += '█' } + blueredstr += "\x0300" + (50 - bluecount - redcount).times { blueredstr += '-' } + blueredstr += "\x0304" + redcount.times { blueredstr += '█' } + blueredstr + end + def stateness(gimme) states = {"AK" => "Alaska", "AL" => "Alabama", "AR" => "Arkansas", "AS" => "American Samoa", @@ -159,37 +186,9 @@ states[search_state.upcase] else Lita.logger.debug "Returning #{search_state}" search_state end - end - - def ansielection(response, results) - reds = 0 - blues = 0 - results['candidates'].each do |candidate| - if candidate['lname'] == 'Clinton' - blues = candidate['evotes'] - end - if candidate['lname'] == 'Trump' - reds = candidate['evotes'] - end - end - - reply = '' - extras = 54 - (blues / 10) - (reds / 10) - reply += "\x0312" - (blues / 10).times { reply += '█' } - reply += "\x0300" - extras.times { reply += '-'} - reply += "\x0304" - (reds / 10).times { reply += '█' } - - reply.insert((reply.length / 2) + 3, "👽") - - reply = "\x0300Clinton #{blues} |" + reply + "\x0300| Trump #{reds}" - - response.reply reply end Lita.register_handler(self) end end