f1results 0.1.1 → 0.2.pre.alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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