Class: UkBuses::Query
- Inherits:
-
Object
- Object
- UkBuses::Query
- Defined in:
- lib/uk_buses/query.rb
Instance Method Summary collapse
- #fetch_buses(stop_code) ⇒ Object
-
#initialize(stop_code) ⇒ Query
constructor
A new instance of Query.
Constructor Details
#initialize(stop_code) ⇒ Query
Returns a new instance of Query.
7 8 9 |
# File 'lib/uk_buses/query.rb', line 7 def initialize(stop_code) fetch_buses(stop_code) end |
Instance Method Details
#fetch_buses(stop_code) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/uk_buses/query.rb', line 11 def fetch_buses(stop_code) buses = [] doc = Nokogiri::HTML(open("http://nextbuses.mobi/WebView/BusStopSearch/BusStopSearchResults/#{ stop_code }")) doc.xpath('//*[@id="wrapper"]/div[4]/table[1]/tr').each do |row| current_bus = {} row.children.each do |child| child_inner = child.inner_text.strip current_bus[:route_number] = child_inner if child_inner.length >= 1 && child_inner.length < 5 current_bus[:destination] = child_inner.split(/\b(at|in|DUE)\b/).first[0..-2] if child_inner.length > 5 if child_inner.split(/\b(at|in|DUE)\b/)[1] == 'DUE' current_bus[:arrives] = 'DUE' else current_bus[:arrives] = child_inner.split(/\b(at|in|DUE)\b/)[2].strip if child_inner.length > 5 end end buses << UkBuses::Bus.new(current_bus[:route_number], current_bus[:destination], current_bus[:arrives]) end buses end |