mpk-krakow-rb

Ruby library for fetching schedules for MPK Krakow.
git clone git://vcs.sapka.me/mpk-krakow-pl
Log | Files | Refs | README

commit 8af98ae5f4d0b1e99a8f041d3c38d023e2b3c13d
parent 4ceb8398b7709314f053e1feb604afa527d4f700
Author: Michal Sapka <msapka@gmail.com>
Date:   Wed,  4 Nov 2015 23:26:39 +0100

stops are objects with lines

Diffstat:
Mlib/mpk_krakow_rb.rb | 8++++++--
Alib/mpk_krakow_rb/stop.rb | 30++++++++++++++++++++++++++++++
Aspec/stop_spec.rb | 9+++++++++
Mspec/stops_spec.rb | 4++++
4 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/lib/mpk_krakow_rb.rb b/lib/mpk_krakow_rb.rb @@ -1,7 +1,11 @@ +# encoding: utf-8 + +require 'ostruct' require 'open-uri' require 'nokogiri' -require "mpk_krakow_rb/version" -require "mpk_krakow_rb/stops.rb" +require 'mpk_krakow_rb/version' +require 'mpk_krakow_rb/stops.rb' +require 'mpk_krakow_rb/stop.rb' module MpkKrakowRb # Your code goes here... diff --git a/lib/mpk_krakow_rb/stop.rb b/lib/mpk_krakow_rb/stop.rb @@ -0,0 +1,30 @@ +module MpkKrakowRb + class Stop + attr_accessor :id, :name + + def initialize(id:, name:) + @id = id + @name =name + @url = "http://rozklady.mpk.krakow.pl/aktualne/p/p#{id}.htm" + end + + def lines + @lines ||= get_lines + end + + def get_lines + lines = [] + @doc = Nokogiri::HTML(open(@url)) + @doc. + to_s. + scan(/>(\d*)\s/). + map{ |i| i.first.to_i }. + reject(&:zero?). + uniq. + each do |line| + lines << line + end + lines + end + end +end diff --git a/spec/stop_spec.rb b/spec/stop_spec.rb @@ -0,0 +1,9 @@ +require "spec_helper" + +describe MpkKrakowRb::Stop do + let(:stop) { MpkKrakowRb::Stop.new(id: "0782", name: "Agatowa") } + + it 'gets lines' do + expect(stop.lines.count).not_to eq(0) + end +end diff --git a/spec/stops_spec.rb b/spec/stops_spec.rb @@ -5,4 +5,8 @@ describe MpkKrakowRb::Stops do it "returns stops" do expect(stops.count).not_to eq(0) end + + it "stops are of a Stop class" do + expect(stops.first.class).to eq(MpkKrakowRb::Stop) + end end