Class: UkBuses::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/uk_buses/query.rb

Instance Method Summary collapse

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