traffic 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.md +46 -0
- data/Rakefile +6 -0
- data/lib/traffic/info.rb +21 -0
- data/lib/traffic/provider.rb +12 -0
- data/lib/traffic/providers/file_index.rb +51 -0
- data/lib/traffic/version.rb +3 -0
- data/lib/traffic.rb +32 -0
- data/spec/fixtures/file_index/empty_rss.xml +1 -0
- data/spec/fixtures/file_index/rss.xml +23 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/traffic/info_spec.rb +17 -0
- data/spec/traffic/providers_spec.rb +15 -0
- data/spec/traffic_spec.rb +123 -0
- data/traffic.gemspec +26 -0
- metadata +146 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm ruby-1.9.3-p0@traffic
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
Traffic: the traffic information gem
|
2
|
+
====================================
|
3
|
+
|
4
|
+
Traffic is a gem that supplies traffic information from multiple data providers
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------------
|
8
|
+
gem install traffic
|
9
|
+
|
10
|
+
Usage Examples
|
11
|
+
--------------
|
12
|
+
require "traffic"
|
13
|
+
|
14
|
+
info = Traffic.from(:file_index)
|
15
|
+
|
16
|
+
puts info.count
|
17
|
+
#=> 15
|
18
|
+
puts "#{info.size} km"
|
19
|
+
#=> "45 km"
|
20
|
+
|
21
|
+
info_item = info.items.first
|
22
|
+
|
23
|
+
puts "#{info_item.from} to #{info_item.to}
|
24
|
+
#=> "Amsterdam to Amersfoort"
|
25
|
+
puts info_item.road
|
26
|
+
#=> "A1"
|
27
|
+
puts "#{info_item.length} km"
|
28
|
+
#=> "2.8 km"
|
29
|
+
puts "#{info_item.description} - #{info_item.location} - #{info_item.cause}"
|
30
|
+
#=> "stilstaand verkeerd - Eemnes en Eembrugge - defecte vrachtwagen"
|
31
|
+
puts "#{info_item.from_location} - #{info_item.to_location}"
|
32
|
+
#=> "40.0 - 42.8"
|
33
|
+
|
34
|
+
Providers
|
35
|
+
---------
|
36
|
+
For now it only includes a provider for the Dutch traffic information from [fileindex.nl](http://www.fileindex.nl/).
|
37
|
+
|
38
|
+
Testing
|
39
|
+
-------
|
40
|
+
Run all tests:
|
41
|
+
|
42
|
+
rspec spec/
|
43
|
+
|
44
|
+
Copyright
|
45
|
+
---------
|
46
|
+
Copyright (c) 2011 Daniël van Hoesel.
|
data/Rakefile
ADDED
data/lib/traffic/info.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Traffic
|
2
|
+
MAIN_ATTRIBUTES = [:timestamp, :count, :size, :traffic]
|
3
|
+
Info = Struct.new(*MAIN_ATTRIBUTES) do
|
4
|
+
def traffic?
|
5
|
+
!traffic
|
6
|
+
end
|
7
|
+
|
8
|
+
def items
|
9
|
+
@items ||= []
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
ITEM_ATTRIBUTES = [:road, :from, :to, :from_location, :to_location, :location, :length, :description, :cause, :status]
|
14
|
+
InfoItem = Struct.new(*ITEM_ATTRIBUTES) do
|
15
|
+
ITEM_ATTRIBUTES.each do |attr|
|
16
|
+
define_method "#{attr}?" do
|
17
|
+
!!self.send(attr)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# require all provider source files
|
2
|
+
Dir[File.expand_path("../providers/**/*.rb", __FILE__)].each {|f| require f}
|
3
|
+
|
4
|
+
module Traffic
|
5
|
+
def self.Provider(name)
|
6
|
+
# camelcase the name
|
7
|
+
Traffic::Providers.const_get "#{name.to_s.gsub(/(?:^|_)(.)/) { $1.upcase }}"
|
8
|
+
rescue NameError => e
|
9
|
+
raise "unknown provider: #{name}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'feedzirra'
|
2
|
+
|
3
|
+
module Traffic
|
4
|
+
module Providers
|
5
|
+
class FileIndex
|
6
|
+
RSS_FEED = "http://www.fileindex.nl/rss.php"
|
7
|
+
|
8
|
+
def traffic
|
9
|
+
rss.description =~ /Er zijn geen files./
|
10
|
+
end
|
11
|
+
|
12
|
+
def timestamp
|
13
|
+
Time.parse(rss.title.gsub(/Fileindex.nl actuele files /, ""))
|
14
|
+
end
|
15
|
+
|
16
|
+
def count
|
17
|
+
rss.description[/(\d+) files?.+van .+ km./, 1].to_i
|
18
|
+
end
|
19
|
+
|
20
|
+
def size
|
21
|
+
rss.description[/\d+ files?.+van (.+) km./, 1].to_i
|
22
|
+
end
|
23
|
+
|
24
|
+
def each_item(&block)
|
25
|
+
rss.entries.each do |entry|
|
26
|
+
item = Struct.new(:road, :from, :to, :from_location, :to_location, :location, :length, :description, :cause, :status).new
|
27
|
+
data = entry.title.match /(.+?) van (.+) richting (.+) (.+) km/
|
28
|
+
item.road = data[1]
|
29
|
+
item.from = data[2]
|
30
|
+
item.to = data[3]
|
31
|
+
item.length = data[4].to_f
|
32
|
+
|
33
|
+
data = entry.summary.match /\b(.+)\b tussen \b(.+)\b( door (.*))? HMP([\d\.]+) .+ HMP([\d\.]+)\s*(.*)/
|
34
|
+
item.description = data[1]
|
35
|
+
item.location = data[2]
|
36
|
+
item.cause = data[4]
|
37
|
+
item.from_location = data[5].to_f
|
38
|
+
item.to_location = data[6].to_f
|
39
|
+
item.status = data[7]
|
40
|
+
|
41
|
+
yield item
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
def rss
|
47
|
+
@data ||= Feedzirra::Feed.fetch_and_parse(RSS_FEED)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/traffic.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path("../traffic/version", __FILE__)
|
2
|
+
require File.expand_path("../traffic/provider", __FILE__)
|
3
|
+
require File.expand_path("../traffic/info", __FILE__)
|
4
|
+
|
5
|
+
module Traffic
|
6
|
+
def self.from(provider_name)
|
7
|
+
provider = Provider(provider_name).new
|
8
|
+
info = Info.new
|
9
|
+
|
10
|
+
MAIN_ATTRIBUTES.each do |attr|
|
11
|
+
if provider.respond_to?(attr)
|
12
|
+
info.send("#{attr}=", provider.send(attr))
|
13
|
+
else
|
14
|
+
raise "attribute missing: #{attr}. the selected provider ('#{provider_name}') does not supply all required attributes"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
provider.each_item do |item|
|
19
|
+
info_item = InfoItem.new
|
20
|
+
ITEM_ATTRIBUTES.each do |attr|
|
21
|
+
if item.respond_to?(attr)
|
22
|
+
info_item.send("#{attr}=", item.send(attr))
|
23
|
+
else
|
24
|
+
raise "attribute missing: #{attr}. the selected provider item ('#{provider_name}') does not supply all required attributes"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
info.items << info_item
|
28
|
+
end
|
29
|
+
|
30
|
+
info
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Fileindex.nl actuele files 22-dec-2011 22:11:46</title><link>http://www.fileindex.nl/meldingenRSS.aspx</link><description>Er zijn geen files.</description><language>en-us</language></channel></rss>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Fileindex.nl actuele files 22-dec-2011 16:15:52</title><link>http://www.fileindex.nl/meldingenRSS.aspx</link><description>Er zijn 14 files met een totale lengte van 45 km.</description><language>en-us</language><item><title>A1 van Amsterdam richting Amersfoort 2.6 km
|
3
|
+
</title><description>Langzaam rijdend verkeer tussen Eemnes en Eembrugge door Ongeval(len) HMP30.2 --> HMP32.8 Deze file wordt langer.</description></item><item><title>A4 van Amsterdam richting Delft 7.3 km
|
4
|
+
</title><description>Stilstaand verkeer tussen Burgerveen en Brug over de Oude Rijn HMP22.6 --> HMP29.9 Deze file wordt korter.
|
5
|
+
</description></item><item><title>A10 van De Nieuwe Meer richting Coenplein 3.4 km
|
6
|
+
</title><description>Stilstaand verkeer tussen Geuzenveld en Coenplein HMP25.7 --> HMP29.1 Deze file wordt korter.
|
7
|
+
</description></item><item><title>A13 van Rijswijk richting Rotterdam 2.2 km
|
8
|
+
</title><description>Langzaam rijdend verkeer tussen TU Delft en Berkel en Rodenrijs HMP13.5 --> HMP15.7</description></item><item><title>A15 van Ridderkerk richting Rozenburg 4 km
|
9
|
+
</title><description>Stilstaand verkeer tussen Hoogvliet en Spijkenisse HMP47.1 --> HMP43.1 Deze file wordt korter.
|
10
|
+
</description></item><item><title>A15 van Ridderkerk richting Gorinchem 3.2 km
|
11
|
+
</title><description>Stilstaand verkeer tussen Alblasserdam en Sliedrecht-West HMP77.9 --> HMP81.1 Deze file wordt langer.</description></item><item><title>A15 van Ridderkerk richting Gorinchem 1.5 km
|
12
|
+
</title><description>Stilstaand verkeer tussen Sliedrecht-Oost en Hardinxveld-Giessendam HMP85.5 --> HMP87 Deze file wordt langer.</description></item><item><title>A16 van Breda richting Rotterdam 2.6 km
|
13
|
+
</title><description>Stilstaand verkeer tussen Feijenoord en Terbregseplein HMP20 --> HMP17.4 Deze file wordt korter.
|
14
|
+
</description></item><item><title>A20 van Hoek van Holland richting Gouda 3.1 km
|
15
|
+
</title><description>Langzaam rijdend verkeer tussen Spaansepolder en Terbregseplein HMP28.5 --> HMP31.6 Deze file wordt korter.
|
16
|
+
</description></item><item><title>A20 van Gouda richting Hoek van Holland 0 km
|
17
|
+
</title><description>Drie rijstroken afgesloten tussen Prins Alexander en Terbregseplein door Ongeval(len) HMP37.3 --> HMP37.3 Deze file wordt langer.</description></item><item><title>A20 van Gouda richting Hoek van Holland 6.5 km
|
18
|
+
</title><description>Stilstaand verkeer tussen Moordrecht en Terbregseplein door Ongeval(len) HMP43.3 --> HMP36.8 Deze file wordt langer.</description></item><item><title>A28 van Utrecht richting Amersfoort 3.1 km
|
19
|
+
</title><description>Stilstaand verkeer tussen De Uithof en Den Dolder HMP5.8 --> HMP8.9 Deze file wordt korter.
|
20
|
+
</description></item><item><title>A28 van Utrecht richting Amersfoort 2.8 km
|
21
|
+
</title><description>Langzaam rijdend verkeer tussen Maarn en Leusden HMP16.2 --> HMP19 Deze file wordt korter.
|
22
|
+
</description></item><item><title>A50 van Arnhem richting Oss 2.7 km
|
23
|
+
</title><description>Langzaam rijdend verkeer tussen Valburg en Ewijk HMP154.6 --> HMP151.9</description></item></channel></rss>
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'simplecov'
|
3
|
+
require 'fakeweb'
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
SimpleCov.start do
|
7
|
+
add_group 'Traffic', 'lib/traffic'
|
8
|
+
add_group 'Specs', 'spec'
|
9
|
+
add_filter __FILE__
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.mock_with :mocha
|
14
|
+
|
15
|
+
config.before :each do
|
16
|
+
FakeWeb.allow_net_connect = false
|
17
|
+
Feedzirra::Feed.stubs(:fetch_and_parse).raises("do not connect to feed, stub this method")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def stub_feed(fixture)
|
23
|
+
stub = Feedzirra::Feed.parse(File.read(File.expand_path("../fixtures/#{fixture}", __FILE__)))
|
24
|
+
Feedzirra::Feed.stubs(:fetch_and_parse).returns(stub)
|
25
|
+
end
|
26
|
+
|
27
|
+
load File.expand_path('../../lib/traffic.rb', __FILE__)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Traffic do
|
4
|
+
describe "InfoItem" do
|
5
|
+
|
6
|
+
it "should have presence testers" do
|
7
|
+
item = Traffic::InfoItem.new
|
8
|
+
Traffic::ITEM_ATTRIBUTES.each do |attr|
|
9
|
+
item.send("#{attr}=", "foobar")
|
10
|
+
item.send("#{attr}?").should be_true
|
11
|
+
item.send("#{attr}=", nil)
|
12
|
+
item.send("#{attr}?").should be_false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Traffic do
|
4
|
+
|
5
|
+
describe "::Provider" do
|
6
|
+
it "should return a provider class based on a name" do
|
7
|
+
Traffic::Provider(:file_index).should == Traffic::Providers::FileIndex
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should raise an exception when an unknown provider is specified" do
|
11
|
+
lambda { Traffic::Provider(:foobar) }.should raise_error
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Traffic do
|
4
|
+
|
5
|
+
describe ".from" do
|
6
|
+
it "should raise an exception when using an unknown provider" do
|
7
|
+
lambda { Traffic.from(:foobar) }.should raise_error
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should raise an exception when using an provider with incomplete main attributes" do
|
11
|
+
module Traffic
|
12
|
+
module Providers
|
13
|
+
class EmptyProvider
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
lambda { Traffic.from(:empty_provider) }.should raise_error
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should raise an exception when using an provider with incomplete item attributes" do
|
21
|
+
module Traffic
|
22
|
+
module Providers
|
23
|
+
class EmptyProvider
|
24
|
+
attr_accessor *Traffic::MAIN_ATTRIBUTES
|
25
|
+
def each_item(&block)
|
26
|
+
yield
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
lambda { Traffic.from(:empty_provider) }.should raise_error
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when there is no traffic" do
|
35
|
+
before :each do
|
36
|
+
stub_feed "file_index/empty_rss.xml"
|
37
|
+
@info = Traffic.from(:file_index)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should indicate that there is no traffic" do
|
41
|
+
@info.should_not be_traffic
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "when there is traffic" do
|
46
|
+
before :each do
|
47
|
+
stub_feed "file_index/rss.xml"
|
48
|
+
@info = Traffic.from(:file_index)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should indicate that there is traffic" do
|
52
|
+
@info.should be_traffic
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return an info object" do
|
56
|
+
@info.class.should == Traffic::Info
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should be able to return the total size" do
|
60
|
+
@info.size.should == 45
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should be able to return the total count" do
|
64
|
+
@info.count.should == 14
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should return a list with info items with the same length as count" do
|
68
|
+
@info.items.size.should == @info.count
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should return a list with info items" do
|
72
|
+
@info.items.each { |i| i.class.should == Traffic::InfoItem }
|
73
|
+
end
|
74
|
+
|
75
|
+
context "the info items in the list" do
|
76
|
+
before :each do
|
77
|
+
@info_item = @info.items.first
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should include a from" do
|
81
|
+
@info_item.from.should == "Amsterdam"
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should include a to" do
|
85
|
+
@info_item.to.should == "Amersfoort"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should include a road number" do
|
89
|
+
@info_item.road.should == "A1"
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should include a length in km" do
|
93
|
+
@info_item.length.should == 2.6
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should include a description" do
|
97
|
+
@info_item.description.should == "Langzaam rijdend verkeer"
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should include a location" do
|
101
|
+
@info_item.location.should == "Eemnes en Eembrugge"
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should include a cause" do
|
105
|
+
@info_item.cause.should == "Ongeval(len)"
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should include a status" do
|
109
|
+
@info_item.status.should == "Deze file wordt langer."
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should include a from location (hecto markers)" do
|
113
|
+
@info_item.from_location.should == 30.2
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should include a to location" do
|
117
|
+
@info_item.to_location.should == 32.8
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
data/traffic.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "traffic/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "traffic"
|
7
|
+
s.version = Traffic::VERSION
|
8
|
+
s.authors = ["Daniel van Hoesel"]
|
9
|
+
s.email = ["daniel@danielvanhoesel.nl"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Traffic: the traffic information gem}
|
12
|
+
s.description = %q{Traffic is a gem that supplies traffic information from multiple data providers}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_development_dependency('bundler', '~> 1.0')
|
20
|
+
s.add_development_dependency('rake', '~> 0.9')
|
21
|
+
s.add_development_dependency('rspec', '~> 2.7')
|
22
|
+
s.add_development_dependency('mocha', '~> 0.10')
|
23
|
+
s.add_development_dependency('simplecov', '~> 0.5')
|
24
|
+
s.add_development_dependency('fakeweb', '~> 1.3')
|
25
|
+
s.add_dependency('feedzirra', '~> 0.1.1')
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: traffic
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Daniel van Hoesel
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: &70310037002700 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70310037002700
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &70310037001620 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.9'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70310037001620
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70310037000800 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.7'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70310037000800
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: mocha
|
49
|
+
requirement: &70310036999020 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.10'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70310036999020
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: simplecov
|
60
|
+
requirement: &70310036998040 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0.5'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70310036998040
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: fakeweb
|
71
|
+
requirement: &70310036997360 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '1.3'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70310036997360
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: feedzirra
|
82
|
+
requirement: &70310036996600 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 0.1.1
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70310036996600
|
91
|
+
description: Traffic is a gem that supplies traffic information from multiple data
|
92
|
+
providers
|
93
|
+
email:
|
94
|
+
- daniel@danielvanhoesel.nl
|
95
|
+
executables: []
|
96
|
+
extensions: []
|
97
|
+
extra_rdoc_files: []
|
98
|
+
files:
|
99
|
+
- .gitignore
|
100
|
+
- .rvmrc
|
101
|
+
- Gemfile
|
102
|
+
- README.md
|
103
|
+
- Rakefile
|
104
|
+
- lib/traffic.rb
|
105
|
+
- lib/traffic/info.rb
|
106
|
+
- lib/traffic/provider.rb
|
107
|
+
- lib/traffic/providers/file_index.rb
|
108
|
+
- lib/traffic/version.rb
|
109
|
+
- spec/fixtures/file_index/empty_rss.xml
|
110
|
+
- spec/fixtures/file_index/rss.xml
|
111
|
+
- spec/spec_helper.rb
|
112
|
+
- spec/traffic/info_spec.rb
|
113
|
+
- spec/traffic/providers_spec.rb
|
114
|
+
- spec/traffic_spec.rb
|
115
|
+
- traffic.gemspec
|
116
|
+
homepage: ''
|
117
|
+
licenses: []
|
118
|
+
post_install_message:
|
119
|
+
rdoc_options: []
|
120
|
+
require_paths:
|
121
|
+
- lib
|
122
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
requirements: []
|
135
|
+
rubyforge_project:
|
136
|
+
rubygems_version: 1.8.10
|
137
|
+
signing_key:
|
138
|
+
specification_version: 3
|
139
|
+
summary: ! 'Traffic: the traffic information gem'
|
140
|
+
test_files:
|
141
|
+
- spec/fixtures/file_index/empty_rss.xml
|
142
|
+
- spec/fixtures/file_index/rss.xml
|
143
|
+
- spec/spec_helper.rb
|
144
|
+
- spec/traffic/info_spec.rb
|
145
|
+
- spec/traffic/providers_spec.rb
|
146
|
+
- spec/traffic_spec.rb
|