f1results 0.1.1 → 0.2.pre.alpha.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a1a55a64744c57fea1c16aee83239865fefd42ce
4
- data.tar.gz: 16c7f5722e92ccdb9516b32b7f9e467a5fce57e7
3
+ metadata.gz: c381557affdd5f2d9ce7294b915df1120a78a04f
4
+ data.tar.gz: 067d5b07bae14ce0c051997d0668cf5d69fe85b3
5
5
  SHA512:
6
- metadata.gz: d0a20348047c8dfc441ddd5a17f3798a09ff7342d4c8840d0bb56e302341b8b89da6a61e3484d85a29b07221b833c2e1a9fd16bf6cc34131ce956a27b796c3a0
7
- data.tar.gz: e379bf7efb5f8947de78a2440dbe7eb876ca9392156566d17de080d0012705245c8d9e87fcae9635ae84de5f6835cf9bdf0678ab5b3de098712ecc94e765b6cf
6
+ metadata.gz: 7cec638c906397d24bfdfa57162387c800ad1fa571c83e6944d16feaca4885c5675aaa4f39ab5efde1b0b541265aa39230bd044e8a484a09094eaba2c6af09b1
7
+ data.tar.gz: e844bd99064029f4c3ac02f1c25580462f4726a410df61c5e7e86bc9a1a5d88b95a4a098b978e8b90646ab5bd05647aa57d98fcc07ee3461eace8c91e02f837c
data/Rakefile CHANGED
@@ -2,9 +2,9 @@ require 'bundler/setup'
2
2
  require 'rake'
3
3
  require 'rake/testtask'
4
4
 
5
- task :default => :test
5
+ task default: :test
6
6
 
7
7
  Rake::TestTask.new do |t|
8
8
  t.libs << 'test/lib'
9
9
  t.pattern = 'test/*_test.rb'
10
- end
10
+ end
data/bin/f1results CHANGED
@@ -3,51 +3,46 @@
3
3
  require 'rubygems'
4
4
  require 'optparse'
5
5
  require 'terminal-table'
6
- require 'f1results'
6
+ require File.expand_path('../../lib/f1results.rb', __FILE__)
7
7
 
8
- options = {}
8
+ year = Time.now.year
9
+ country = ''
10
+ event_type = :race
9
11
 
10
12
  optparse = OptionParser.new do |opts|
11
- options[:type] = :race
12
- opts.on('-q', '--qualifying', 'Qualifying') do
13
- options[:type] = :qualifying
14
- end
15
- end
16
-
17
- optparse.parse!
18
-
19
- season = ARGV[0] || Time.now.year
20
- country = if country = ARGV[1]
21
- country.to_i == 0 ? country : country.to_i
22
- else
23
- :latest
13
+ opts.on('-y', '--year=YEAR', Integer) { |val| year = val }
14
+ opts.on('-c', '--country=COUNTRY', String) { |val| country = val.downcase }
15
+ opts.on('-e', '--event=EVENT', String) { |val| event_type = val.downcase.to_sym }
16
+ opts.parse!
24
17
  end
25
18
 
26
19
  begin
27
- event = F1Results.get(season, country, options[:type])
20
+ event = F1Results.get(year, country, event_type)
28
21
  rescue Exception => e
29
22
  puts e
30
23
  exit
31
24
  end
32
25
 
33
- title = [event.country, event.type.to_s.capitalize, event.grand_prix].join(' ')
34
- table = Terminal::Table.new :title => title, :rows => event.to_a
26
+ title = "#{event.season} #{event.country} #{event.type_name}\n#{event.name}"
27
+ table = Terminal::Table.new title: title, rows: event.to_a
35
28
 
36
- if event.qualifying?
37
- cols = %W(Pos Num Driver Team Q1 Q2 Q3 Laps)
29
+ if event.practice?
30
+ table.headings = %W(Pos Driver Team Time Laps)
31
+ table.align_column 0, :right
32
+ table.align_column 4, :right
33
+
34
+ elsif event.qualifying?
35
+ table.headings = %W(Pos Driver Team Q1 Q2 Q3 Laps)
38
36
  table.align_column 0, :right
39
37
  table.align_column 1, :right
40
- table.align_column 7, :right
38
+ table.align_column 6, :right
41
39
 
42
40
  elsif event.race?
43
- cols = %W(Pos Num Driver Team Laps Time/Retired Grid Points)
41
+ table.headings = %W(Pos Driver Country Team Time/Retired Points)
44
42
  table.align_column 0, :right
45
- table.align_column 1, :right
43
+ table.align_column 2, :center
46
44
  table.align_column 4, :right
47
45
  table.align_column 5, :right
48
- table.align_column 6, :right
49
- table.align_column 7, :right
50
46
  end
51
47
 
52
- table.headings = cols
53
48
  puts table
@@ -3,49 +3,19 @@ require 'mechanize'
3
3
  module F1Results
4
4
  class Agent < ::Mechanize
5
5
  def get_event(season, country, type)
6
- event = Event.new(:season => season, :type => type)
6
+ event = Event.new(season: season, country: country, type: type)
7
+ path = "content/fom-website/en/championship/results/#{season}-race-results/#{season}-#{event.country_slug}-results/#{event.type_slug}.html"
7
8
 
8
9
  begin
9
- get(::File.join(F1Results::BASEURL, "results/season/#{season}/"))
10
- rescue Mechanize::ResponseCodeError, 404
11
- raise "No results for season: #{season}"
10
+ get(::File.join(F1Results::BASEURL, path))
11
+ rescue Mechanize::ResponseCodeError, Net::HTTPNotFound
12
+ raise 'No results'
12
13
  end
13
14
 
14
- season_country_link = case
15
- when country.is_a?(String)
16
- event.country = country
17
- page.link_with(:text => event.country)
18
- when country.is_a?(Integer)
15
+ event.name = page.parser.xpath('//a[contains(@class, "level-0")]').text
16
+ table = page.parser.xpath('//tbody')
19
17
 
20
- # Get the link to the country on the nth row
21
-
22
- next_page = page.parser.at_xpath("//tr[not(position()=1)][#{country}]/td[1]/a")
23
- event.country = next_page.text
24
- page.link_with(:node => next_page)
25
- when country == :latest
26
-
27
- # Get the link to the country in the last row where results are present
28
-
29
- next_page = page.parser.at_xpath('(//tr/td[3][node()])[last()]/../td[1]/a')
30
- event.country = next_page.text
31
- page.link_with(:node => next_page)
32
- end
33
- raise "Grand Prix not found: #{season} #{country}" if season_country_link.nil?
34
-
35
- click(season_country_link)
36
- event.grand_prix = page.parser.at_xpath('//h2').text
37
-
38
- results_link = if event.qualifying?
39
- page.link_with(:text => 'QUALIFYING') || page.link_with(:text => 'SUNDAY QUALIFYING')
40
- elsif event.race?
41
- page.link_with(:text => 'RACE', :dom_class => 'L3Selected')
42
- end
43
-
44
- raise "No #{event.type} results for: #{season} #{country}" if results_link.nil?
45
- click(results_link) if event.qualifying?
46
- table = page.parser.xpath('//table[contains(@class, "raceResults")]')
47
-
48
- event.parse_results_table(table)
18
+ return event.parse_results_table(table)
49
19
  end
50
20
  end
51
21
  end
@@ -1,14 +1,49 @@
1
+ require 'active_support/core_ext/string'
2
+
1
3
  module F1Results
2
4
  class Event
3
- attr_accessor :season, :country, :type, :grand_prix, :results
5
+ attr_accessor :season, :country, :type, :name, :results
4
6
 
5
- def initialize(args)
6
- args.each { |k,v| send("#{k}=", v) }
7
+ TYPES = {
8
+ p1: :practice1,
9
+ p2: :practice2,
10
+ p3: :practice3,
11
+ q: :qualifying,
12
+ r: :race
13
+ }
14
+
15
+ def initialize(args = {})
7
16
  @results = []
17
+ args.each { |k,v| send("#{k}=", v) }
8
18
  end
9
19
 
10
20
  def country
11
- @country.split(/(\W)/).map(&:capitalize).join
21
+ @country.titleize
22
+ end
23
+
24
+ def country_slug
25
+ @country.parameterize
26
+ end
27
+
28
+ def type=(type)
29
+ if type.to_s.length <= 2
30
+ @type = TYPES[type]
31
+ else
32
+ @type = type
33
+ end
34
+ end
35
+
36
+ # Human readable type, e.g. "Practice 1", "Qualifying"
37
+ def type_name
38
+ @type.to_s.gsub(/\d/, ' \0').capitalize
39
+ end
40
+
41
+ def type_slug
42
+ type_name.parameterize
43
+ end
44
+
45
+ def practice?
46
+ @type.to_s.gsub(/\d/, '') == 'practice'
12
47
  end
13
48
 
14
49
  def qualifying?
@@ -32,17 +67,35 @@ module F1Results
32
67
  end
33
68
 
34
69
  def parse_results_table(table)
35
- data = table.xpath('//tr[not(position()=1)]').map do |row|
36
- row.xpath('./td').map do |col|
37
- col.text.strip
70
+ @results = []
71
+
72
+ # Remove driver abbreviation from cell, shown only in race results
73
+ table.xpath('//span[@class="tla"]').each(&:remove)
74
+
75
+ # Turn HTML table into an array of arrays
76
+ data = table.xpath('//tr').map do |row|
77
+ row.xpath('./td').map do |cell|
78
+ cell = cell.text.gsub(/[[:space:]]+/, ' ').strip
79
+ cell.blank? ? nil : cell
38
80
  end
39
81
  end
40
82
 
83
+ # Remove rows with empty position cells (Q1 107% Time), and table header if it's there
84
+ data.reject! { |row| row[0].nil? || row[0] == 'P' }
85
+
41
86
  data.each_with_index do |row, i|
42
- klass = qualifying? ? QualifyingResult : RaceResult
87
+ klass = case
88
+ when practice?
89
+ PracticeResult
90
+ when qualifying?
91
+ QualifyingResult
92
+ when race?
93
+ RaceResult
94
+ end
95
+
43
96
  result = klass.new(row)
44
- result.index = i + 1
45
- @results << result unless result.position.nil?
97
+ result.index = i
98
+ @results << result
46
99
  end
47
100
 
48
101
  self
@@ -1,6 +1,6 @@
1
1
  module F1Results
2
2
  class Result
3
- attr_accessor :index, :position, :driver, :driver_number, :team, :laps
3
+ attr_accessor :index, :position, :driver, :team, :laps
4
4
 
5
5
  def initialize(row = nil)
6
6
  build(row) unless row.nil?
@@ -8,7 +8,7 @@ module F1Results
8
8
 
9
9
  def position=(n)
10
10
  @position = case
11
- when n == ''
11
+ when n.to_s.empty?
12
12
  nil
13
13
  when n.to_i == 0
14
14
  n
@@ -19,24 +19,35 @@ module F1Results
19
19
 
20
20
  private
21
21
 
22
- def build(row)
23
- row.map! do |col|
24
- col = col.strip.gsub(/\s+/, ' ')
25
- col == '' ? nil : col
22
+ def build(row)
23
+ self.position = row[0]
24
+ @driver = row[1]
25
+ row
26
26
  end
27
- self.position = row[0]
28
- @driver_number = row[1].to_i
29
- @driver = row[2]
30
- @team = row[3]
31
- row
27
+ end
28
+
29
+ class PracticeResult < Result
30
+ attr_accessor :time
31
+
32
+ def to_a
33
+ [position, driver, team, time, laps]
32
34
  end
35
+
36
+ private
37
+
38
+ def build(row)
39
+ row = super
40
+ @team = row[2]
41
+ @time = row[3]
42
+ @laps = row[4].to_i
43
+ end
33
44
  end
34
45
 
35
46
  class QualifyingResult < Result
36
47
  attr_accessor :q1, :q2, :q3
37
48
 
38
49
  def to_a
39
- [position, driver_number, driver, team, q1, q2, q3, laps]
50
+ [position, driver, team, q1, q2, q3, laps]
40
51
  end
41
52
 
42
53
  def time
@@ -45,22 +56,21 @@ module F1Results
45
56
 
46
57
  private
47
58
 
48
- def build(row)
49
- row = super
50
- @q1 = row[4]
51
- if row.length > 5
52
- @q2 = row[5]
53
- @q3 = row[6]
54
- @laps = row[7].to_i
59
+ def build(row)
60
+ row = super
61
+ @team = row[2]
62
+ @q1 = row[3]
63
+ @q2 = row[4]
64
+ @q3 = row[5]
65
+ @laps = row[6].to_i
55
66
  end
56
- end
57
67
  end
58
68
 
59
69
  class RaceResult < Result
60
- attr_accessor :time_or_retired, :time, :retired, :grid, :points
70
+ attr_accessor :driver_country_abbr, :time, :retired, :points
61
71
 
62
72
  def to_a
63
- [position, driver_number, driver, team, laps, time_or_retired, grid, points]
73
+ [position, driver, driver_country_abbr, team, time_or_retired, points]
64
74
  end
65
75
 
66
76
  def time_or_retired=(str)
@@ -77,12 +87,12 @@ module F1Results
77
87
 
78
88
  private
79
89
 
80
- def build(row)
81
- row = super
82
- @laps = row[4].to_i
83
- self.time_or_retired = row[5]
84
- @grid = row[6].to_i
85
- @points = row[7].to_i
86
- end
90
+ def build(row)
91
+ row = super
92
+ @driver_country_abbr = row[2]
93
+ @team = row[3]
94
+ self.time_or_retired = row[4]
95
+ @points = row[5].to_i
96
+ end
87
97
  end
88
98
  end
@@ -1,3 +1,3 @@
1
1
  module F1Results
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2-alpha.3'
3
3
  end
data/test/agent_test.rb CHANGED
@@ -1,70 +1,51 @@
1
- # encoding: utf-8
2
1
  require 'test_helper'
3
2
 
4
- class AgentTest < MiniTest::Unit::TestCase
3
+ class AgentTest < MiniTest::Test
5
4
  include Fixtures
6
5
 
7
6
  def setup
8
7
  @agent = F1Results::Agent.new
9
8
  end
10
9
 
11
- def test_get_event_2012_great_britain
12
- event = @agent.get_event(2012, 'Great Britain', :race)
10
+ def test_get_event_2015_australia_race
11
+ event = @agent.get_event(2015, 'Australia', :race)
13
12
  assert event.race?
14
- assert_equal 'Great Britain', event.country
15
- assert_equal '2012 FORMULA 1 SANTANDER BRITISH GRAND PRIX', event.grand_prix
16
- assert_equal 24, event.results.size
17
- assert_equal 'Mark Webber', event.winner
18
- assert_equal 'Vitaly Petrov', event.loser
13
+ assert_equal 'Australia', event.country
14
+ assert_equal '2015 FORMULA 1 ROLEX AUSTRALIAN GRAND PRIX', event.name
15
+ assert_equal 17, event.results.length
16
+ assert_equal 'Lewis Hamilton', event.winner
17
+ assert_equal 'Kevin Magnussen', event.loser
19
18
  end
20
19
 
21
- def test_get_event_2012_great_britain_qualifying
22
- event = @agent.get_event(2012, 'Great Britain', :qualifying)
20
+ def test_get_event_2015_australia_qualifying
21
+ event = @agent.get_event(2015, 'Australia', :qualifying)
23
22
  assert event.qualifying?
24
- assert_equal 'Great Britain', event.country
25
- assert_equal '2012 FORMULA 1 SANTANDER BRITISH GRAND PRIX', event.grand_prix
26
- assert_equal 24, event.results.size
27
- assert_equal 'Fernando Alonso', event.winner
28
- assert_equal 'Charles Pic', event.loser
29
- end
30
-
31
- def test_get_event_2005_australia_qualifyng
32
- event = @agent.get_event(2005, 'Australia', :qualifying)
33
23
  assert_equal 'Australia', event.country
34
- assert_equal "2005 FORMULA 1 Foster's Australian Grand Prix", event.grand_prix
35
- assert_equal 20, event.results.size
36
- assert_equal 'Giancarlo Fisichella', event.winner
24
+ assert_equal '2015 FORMULA 1 ROLEX AUSTRALIAN GRAND PRIX', event.name
25
+ assert_equal 20, event.results.length
26
+ assert_equal 'Lewis Hamilton', event.winner
27
+ assert_equal 'Roberto Merhi', event.loser
37
28
  end
38
29
 
39
- def test_get_event_1992_hungary
40
- event = @agent.get_event(1992, 'Hungary', :race)
41
- assert_equal 'Hungary', event.country
42
- assert_equal '1992 Hungarian Grand Prix', event.grand_prix
43
- assert_equal 31, event.results.size
44
- assert_equal 'Ayrton Senna', event.winner
30
+ def test_get_event_2015_australia_practice1
31
+ event = @agent.get_event(2015, 'Australia', :practice1)
32
+ assert event.practice?
33
+ assert_equal 'Australia', event.country
34
+ assert_equal '2015 FORMULA 1 ROLEX AUSTRALIAN GRAND PRIX', event.name
35
+ assert_equal 16, event.results.length
36
+ assert_equal 'Nico Rosberg', event.winner
37
+ assert_equal 'Romain Grosjean', event.loser
45
38
  end
46
39
 
47
40
  def test_get_event_with_bad_year
48
- assert_raises RuntimeError, 'Invalid season: 1800' do
49
- @agent.get_event(1800, 'Australia', :race)
41
+ assert_raises RuntimeError, 'No results' do
42
+ @agent.get_event(1900, 'Australia', :race)
50
43
  end
51
44
  end
52
45
 
53
46
  def test_get_event_with_bad_grand_prix
54
- assert_raises RuntimeError, 'Invalid Grand Prix: New Zealand' do
55
- @agent.get_event(2012, 'New Zealand', :race)
47
+ assert_raises RuntimeError, 'No results' do
48
+ @agent.get_event(2015, 'New Zealand', :race)
56
49
  end
57
50
  end
58
-
59
- def test_get_event_2012_9th
60
- event = @agent.get_event(2012, 9, :race)
61
- assert_equal 'Great Britain', event.country
62
- assert_equal '2012 FORMULA 1 SANTANDER BRITISH GRAND PRIX', event.grand_prix
63
- end
64
-
65
- def test_get_event_2012_latest
66
- event = @agent.get_event(2012, :latest, :race)
67
- assert_equal 'Hungary', event.country
68
- assert_equal 'FORMULA 1 ENI MAGYAR NAGYDÍJ 2012', event.grand_prix
69
- end
70
51
  end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ class EventTest < MiniTest::Test
4
+ def setup
5
+ @event = F1Results::Event.new
6
+ @event.results << F1Results::RaceResult.new([1, 'Mark Webber', 'AUS', 'Red Bull Racing-Renault', '1:25:11.288', 2])
7
+ @event.results << F1Results::RaceResult.new([2, 'Fernando Alonso', 'ESP', 'Ferrari', '+3.0 secs', 1])
8
+ end
9
+
10
+ def test_type
11
+ @event.type = :qualifying
12
+ assert_equal 'qualifying', @event.type_slug
13
+ @event.type = :practice3
14
+ assert_equal 'practice-3', @event.type_slug
15
+ end
16
+
17
+ def test_country
18
+ @event.country = 'Australia'
19
+ assert_equal 'Australia', @event.country
20
+ @event.country = 'great britain'
21
+ assert_equal 'Great Britain', @event.country
22
+ end
23
+
24
+ def test_to_array
25
+ array = @event.to_a
26
+ assert_equal 2, array.length
27
+ assert_kind_of Array, array.first
28
+ assert_kind_of F1Results::RaceResult, @event.results.first
29
+ end
30
+ end
data/test/result_test.rb CHANGED
@@ -1,7 +1,6 @@
1
- # encoding: utf-8
2
1
  require 'test_helper'
3
2
 
4
- class ResultTest < MiniTest::Unit::TestCase
3
+ class ResultTest < MiniTest::Test
5
4
  def test_time
6
5
  result = F1Results::RaceResult.new
7
6
  result.time_or_retired = '1:25:11.288'
@@ -30,46 +29,45 @@ class ResultTest < MiniTest::Unit::TestCase
30
29
  assert_equal '1:46.515', result.time
31
30
  end
32
31
 
33
- def test_parse_race
34
- result = F1Results::RaceResult.new(['5', '9', 'Kimi Räikkönen', 'Lotus-Renault', '52', '+10.3 secs', '6', '10'])
35
- assert_equal 5, result.position
36
- assert_equal 9, result.driver_number
37
- assert_equal 'Kimi Räikkönen', result.driver
38
- assert_equal 'Lotus-Renault', result.team
39
- assert_equal 52, result.laps
40
- assert_equal '+10.3 secs', result.time
41
- assert_equal 6, result.grid
42
- assert_equal 10, result.points
32
+ def test_parse_practice
33
+ result = F1Results::PracticeResult.new(['4', 'Carlos Sainz', 'Toro Rosso', '1:31.014', '32'])
34
+ assert_equal 4, result.position
35
+ assert_equal 'Carlos Sainz', result.driver
36
+ assert_equal 'Toro Rosso', result.team
37
+ assert_equal '1:31.014', result.time
38
+ assert_equal 32, result.laps
43
39
  end
44
40
 
45
41
  def test_parse_qualifying
46
- result = F1Results::QualifyingResult.new(['1', '5', 'Fernando Alonso', 'Ferrari', '1:46.515', '1:56.921', '1:51.746', '25'])
47
- assert_equal 1, result.position
48
- assert_equal 5, result.driver_number
49
- assert_equal 'Fernando Alonso', result.driver
42
+ result = F1Results::QualifyingResult.new(['2', 'Nico Rosberg', 'Mercedes', '1:28.906', '1:27.097', '1:26.921', '14'])
43
+ assert_equal 2, result.position
44
+ assert_equal 'Nico Rosberg', result.driver
45
+ assert_equal 'Mercedes', result.team
46
+ assert_equal '1:28.906', result.q1
47
+ assert_equal '1:27.097', result.q2
48
+ assert_equal '1:26.921', result.q3
49
+ assert_equal 14, result.laps
50
+ end
51
+
52
+ def test_parse_race
53
+ result = F1Results::RaceResult.new(['3', 'Sebastian Vettel', 'GER', 'Ferrari', '+34.523s', '15'])
54
+ assert_equal 3, result.position
55
+ assert_equal 'Sebastian Vettel', result.driver
50
56
  assert_equal 'Ferrari', result.team
51
- assert_equal '1:46.515', result.q1
52
- assert_equal '1:56.921', result.q2
53
- assert_equal '1:51.746', result.q3
54
- assert_equal 25, result.laps
57
+ assert_equal '+34.523s', result.time
58
+ assert_equal 15, result.points
55
59
  end
56
60
 
57
61
  def test_parse_qualifying_with_blank_values
58
- result = F1Results::QualifyingResult.new(['1', '5', 'Fernando Alonso', 'Ferrari', '1:46.515', '', '', ''])
59
- assert_equal '1:46.515', result.q1
62
+ result = F1Results::QualifyingResult.new(['16', 'Marcus Ericsson', 'Sauber', '1:31.376', nil, nil, 10])
63
+ assert_equal '1:31.376', result.q1
60
64
  assert_equal nil, result.q2
61
65
  assert_equal nil, result.q3
62
- assert_equal 0, result.laps
63
- end
64
-
65
- def test_parse_with_extra_whitespace
66
- result = F1Results::RaceResult.new(['14', '17', 'Valtteri Bottas', " \n\nWilliams-Renault ", '57', '+1 Lap', '16', ''])
67
- assert_equal 'Valtteri Bottas', result.driver
68
- assert_equal 'Williams-Renault', result.team
66
+ assert_equal 10, result.laps
69
67
  end
70
68
 
71
69
  def test_race_to_a
72
- result = F1Results::RaceResult.new(['5', '9', 'Kimi Räikkönen', 'Lotus-Renault', '52', '+10.3 secs', '6', '10'])
73
- assert_equal [5, 9, 'Kimi Räikkönen', 'Lotus-Renault', 52, '+10.3 secs', 6, 10], result.to_a
70
+ result = F1Results::RaceResult.new(['3', 'Sebastian Vettel', 'GER', 'Ferrari', '+34.523s', '15'])
71
+ assert_equal [3, 'Sebastian Vettel', 'GER', 'Ferrari', '+34.523s', 15], result.to_a
74
72
  end
75
73
  end
metadata CHANGED
@@ -1,85 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: f1results
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.pre.alpha.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Jeacocke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-22 00:00:00.000000000 Z
11
+ date: 2015-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mechanize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '2.7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '2.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: terminal-table
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
59
+ - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '0'
61
+ version: '10.1'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - '>='
66
+ - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '0'
68
+ version: '10.1'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: minitest
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0'
75
+ version: '5.3'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: '5.3'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: webmock
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '>='
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
89
+ version: '1.17'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '>='
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: '1.17'
83
97
  description: Get F1 results from formula1.com
84
98
  email: dazonic@me.com
85
99
  executables:
@@ -87,19 +101,21 @@ executables:
87
101
  extensions: []
88
102
  extra_rdoc_files: []
89
103
  files:
104
+ - LICENSE
105
+ - README.md
106
+ - Rakefile
90
107
  - bin/f1results
108
+ - lib/f1results.rb
91
109
  - lib/f1results/agent.rb
92
110
  - lib/f1results/event.rb
93
111
  - lib/f1results/result.rb
94
112
  - lib/f1results/version.rb
95
- - lib/f1results.rb
96
113
  - test/agent_test.rb
114
+ - test/event_test.rb
97
115
  - test/result_test.rb
98
- - Rakefile
99
- - README.md
100
- - LICENSE
101
116
  homepage: https://github.com/daz/f1results
102
- licenses: []
117
+ licenses:
118
+ - MIT
103
119
  metadata: {}
104
120
  post_install_message:
105
121
  rdoc_options: []
@@ -107,17 +123,17 @@ require_paths:
107
123
  - lib
108
124
  required_ruby_version: !ruby/object:Gem::Requirement
109
125
  requirements:
110
- - - '>='
126
+ - - ">="
111
127
  - !ruby/object:Gem::Version
112
128
  version: '0'
113
129
  required_rubygems_version: !ruby/object:Gem::Requirement
114
130
  requirements:
115
- - - '>='
131
+ - - ">"
116
132
  - !ruby/object:Gem::Version
117
- version: '0'
133
+ version: 1.3.1
118
134
  requirements: []
119
135
  rubyforge_project:
120
- rubygems_version: 2.0.2
136
+ rubygems_version: 2.4.6
121
137
  signing_key:
122
138
  specification_version: 4
123
139
  summary: F1 Results