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