class NycSubwayStatus::Train
Constants
- TRAINS
Attributes
name[RW]
status[RW]
url[RW]
Public Class Methods
all()
click to toggle source
# File lib/nyc_subway_status/train.rb, line 26 def self.all @@all end
scrape_trains()
click to toggle source
# File lib/nyc_subway_status/train.rb, line 8 def self.scrape_trains browser = Watir::Browser.new :chrome, headless: true browser.goto "http://alert.mta.info/" sleep(3) doc = Nokogiri::HTML.parse(browser.html) TRAINS.each_with_index { |line, index| train = self.new train.name = doc.css("#subwayDiv div img")[index].attribute("alt").text train.status = doc.css("##{line}").text train.url = doc.css("##{line} a").attribute("href").value if doc.css("##{line} a").empty? != true @@all << train } browser.close end
Public Instance Methods
message_formatter(text)
click to toggle source
# File lib/nyc_subway_status/train.rb, line 83 def message_formatter(text) m1 = text.gsub(/^\s/, "") m2 = m1.gsub(/[^,.\&\a-zA-Z0-9]/, " ") m2.gsub(/\s{2,}/, " ") end
mta_parser(collection)
click to toggle source
# File lib/nyc_subway_status/train.rb, line 57 def mta_parser(collection) message = "" collection.children.each { |child| if child.is_a? Nokogiri::XML::Text message += child.text elsif child.name == "img" message += " #{train_name_trimmer(child.attribute("alt").text)} " elsif child.name == "strong" || child.name == "b" message += " #{child.text} " elsif child.name == "i" message += "\n\n#{child.text}" elsif child.name == "br" message += "\n" elsif child.name == "p" puts mta_parser(child).strip end } message_formatter(message) end
scrape_details()
click to toggle source
# File lib/nyc_subway_status/train.rb, line 30 def scrape_details browser = Watir::Browser.new :chrome, headless: true browser.goto "http://alert.mta.info/#{self.url}" sleep(3) doc = Nokogiri::HTML.parse(browser.html) planned_work = doc.css("#status_display .plannedWorkDetailLink") delay = doc.css("#status_display .TitleDelay") change = doc.css("#status_display .TitleServiceChange") if change.empty? != true puts "SERVICE CHANGE" puts "#{mta_parser(doc.css("#status_display"))}\n" end if planned_work.empty? != true puts mta_parser(doc.css("#status_display .plannedWorkDetailLink b")) end if delay.empty? != true puts "DELAYS" puts mta_parser(doc.css("#status_display")) end browser.close end
train_name_trimmer(text)
click to toggle source
# File lib/nyc_subway_status/train.rb, line 79 def train_name_trimmer(text) text[0] end