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 a55f48d1bb8f97dd44c4df7dd379ed14cb172a72
parent 9f153da0e10edef6251556b6b3f4cf523c8e52e8
Author: Michal Sapka <msapka@gmail.com>
Date:   Tue,  3 Nov 2015 22:59:55 +0100

basic Stops

Diffstat:
Mlib/mpk_krakow_rb.rb | 3+++
Alib/mpk_krakow_rb/stops.rb | 29+++++++++++++++++++++++++++++
Mmpk_krakow_rb.gemspec | 2++
Mspec/mpk_krakow_rb_spec.rb | 4----
Aspec/stops_spec.rb | 8++++++++
5 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/lib/mpk_krakow_rb.rb b/lib/mpk_krakow_rb.rb @@ -1,4 +1,7 @@ +require 'open-uri' +require 'nokogiri' require "mpk_krakow_rb/version" +require "mpk_krakow_rb/stops.rb" module MpkKrakowRb # Your code goes here... diff --git a/lib/mpk_krakow_rb/stops.rb b/lib/mpk_krakow_rb/stops.rb @@ -0,0 +1,29 @@ +module MpkKrakowRb + class Stops + include Enumerable + Url = "http://rozklady.mpk.krakow.pl/aktualne/przystan.htm" + Parser = /<li><a href=\\"p\/p(?<id>\d*).htm\\">(?<name>.*)<\/a><\/li>/ + def initialize + @stops = [] + get_stops + end + + def each + return to_enum(__callee__) unless block_given? + 0.step.each do |index| + item = @stops[index] or break + yield item + end + end + + private + + def get_stops + doc = Nokogiri::HTML(open(Url)) + doc.xpath("//li").each do |stop| + parsed = stop.to_s.match(/<li><a href=\"p\/p(?<id>\d*).htm\">(?<name>.*)<\/a><\/li>/i) + @stops << { id: parsed["id"], name: parsed["name"] } + end + end + end +end diff --git a/mpk_krakow_rb.gemspec b/mpk_krakow_rb.gemspec @@ -27,6 +27,8 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] + spec.add_runtime_dependency "nokogiri" + spec.add_development_dependency "bundler", "~> 1.10" spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "rspec" diff --git a/spec/mpk_krakow_rb_spec.rb b/spec/mpk_krakow_rb_spec.rb @@ -4,8 +4,4 @@ describe MpkKrakowRb do it 'has a version number' do expect(MpkKrakowRb::VERSION).not_to be nil end - - it 'does something useful' do - expect(false).to eq(true) - end end diff --git a/spec/stops_spec.rb b/spec/stops_spec.rb @@ -0,0 +1,8 @@ +require "spec_helper" + +describe MpkKrakowRb::Stops do + let(:stops) { MpkKrakowRb::Stops.new } + it "returns stops" do + expect(stops.count).not_to eq(0) + end +end