UNPKG

hubot-scripts

Version:

Allows you to opt in to a variety of scripts

60 lines (54 loc) 2.35 kB
# Description: # Find out what food trucks are at Truck Stop SF today # See http://truckstopsf.com # # Dependencies: # "underscore": "*" # # Configuration: # None # # Commands: # hubot truckstopsf - get just the names of the food trucks today # hubot truckstopsf details|deets - get food truck names and details # hubot truckstopsf! - get food truck names and details # # Author: # chris _ = require 'underscore' data_by_matcher = (input, matcher) -> get_data = (match.match(matcher).slice(1) for match in input) _.flatten(get_data) module.exports = (robot) -> robot.respond /truckstopsf\s?(!|details|deets)?/i, (res) -> d = new Date() utc = d.getTime() + (d.getTimezoneOffset() * 60000) pstDate = new Date(utc + (3600000*-8)); today = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][pstDate.getDay()] if today is 'Sunday' or today is 'Saturday' res.send "Sorry, the trucks aren't there on weekend" else res.http("http://www.truckstopsf.com/").get() (err, _, body) -> return res.send "Sorry, the trucks are out of gas or something." if err show_details = res.match[1]? body = body.replace(/\r|\n/g, ' ') matches = body.match(new RegExp("<h3>#{today}<\/h3>(.+?)<\/div>",'i')) if !matches? || matches[1].match("There are no events") || matches[1].match("There are no food trucks to display") return res.send "Seems there may be no trucks today - check http://www.truckstopsf.com/" matches = matches[1].match(new RegExp("<p><strong>.+?<\/strong>.+?<\/p>",'gi')) matcher = if show_details "<p><strong>(.+)<\/strong> - (.*)<\/p>" else "<p><strong>(.+)<\/strong>" matches = data_by_matcher(matches, matcher) if matches? trucks = (match.replace("&#39;", "'").replace("&amp;", "&") for match in matches) if show_details truck_details = "Today's trucks:" while trucks.length > 0 truck_details += "\n* #{trucks.splice(0,2).join(': ')}" res.send truck_details else res.send "Today's trucks: #{trucks.slice(0, -1).join(', ') } and #{trucks[trucks.length - 1]}" else res.send "Hmm, couldn't parse the trucks web page - try http://www.truckstopsf.com/"