class SpBus::Scrapers::Routes
Constants
- ALL_ROUTES_URL
- ROUTE_NUMBER_PATH
- ROUTE_NUMBER_REGEX
- ROUTE_PATH
- SPACES
- VALIDATOR_PATH
- VALIDATOR_REGEX
- WAY_MATCHER
- WAY_PATH
Attributes
routes[R]
Public Instance Methods
fetch()
click to toggle source
# File lib/spbus/scrapers/routes.rb, line 18 def fetch make_request validate_response build_routes true end
Private Instance Methods
build_route(node)
click to toggle source
# File lib/spbus/scrapers/routes.rb, line 60 def build_route(node) raw_number = normalize(node.css(ROUTE_NUMBER_PATH).inner_text) match = ROUTE_NUMBER_REGEX.match(raw_number) if match route = SpBus::Route.new(match[:number]) route.one_way = one_way?(node) route else false end end
build_routes()
click to toggle source
# File lib/spbus/scrapers/routes.rb, line 40 def build_routes @routes = [] @doc.css(ROUTE_PATH).each do |node| if route = build_route(node) @routes << route end end end
make_request()
click to toggle source
# File lib/spbus/scrapers/routes.rb, line 27 def make_request request = SpBus::Request.new(ALL_ROUTES_URL) request.authenticated = false @doc = Nokogiri::HTML(request.get) end
normalize(str)
click to toggle source
# File lib/spbus/scrapers/routes.rb, line 50 def normalize(str) str.gsub(SPACES, " ").squeeze(" ").strip end
one_way?(node)
click to toggle source
# File lib/spbus/scrapers/routes.rb, line 54 def one_way?(node) text = normalize(node.css(WAY_PATH).inner_text) match = WAY_MATCHER.match(text) match && !match[:two_way] end
validate_response()
click to toggle source
# File lib/spbus/scrapers/routes.rb, line 34 def validate_response if @doc.css(VALIDATOR_PATH).inner_text !~ VALIDATOR_REGEX raise SpBus::UnknownResponse end end