f1results 0.1 → 0.1.1
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 +7 -0
- data/README.md +2 -0
- data/lib/f1results/agent.rb +6 -6
- data/lib/f1results/event.rb +3 -1
- data/lib/f1results/result.rb +25 -16
- data/lib/f1results/version.rb +1 -1
- data/test/result_test.rb +22 -0
- metadata +17 -29
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a1a55a64744c57fea1c16aee83239865fefd42ce
|
4
|
+
data.tar.gz: 16c7f5722e92ccdb9516b32b7f9e467a5fce57e7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d0a20348047c8dfc441ddd5a17f3798a09ff7342d4c8840d0bb56e302341b8b89da6a61e3484d85a29b07221b833c2e1a9fd16bf6cc34131ce956a27b796c3a0
|
7
|
+
data.tar.gz: e379bf7efb5f8947de78a2440dbe7eb876ca9392156566d17de080d0012705245c8d9e87fcae9635ae84de5f6835cf9bdf0678ab5b3de098712ecc94e765b6cf
|
data/README.md
CHANGED
data/lib/f1results/agent.rb
CHANGED
@@ -35,17 +35,17 @@ module F1Results
|
|
35
35
|
click(season_country_link)
|
36
36
|
event.grand_prix = page.parser.at_xpath('//h2').text
|
37
37
|
|
38
|
-
if event.qualifying?
|
39
|
-
|
40
|
-
|
41
|
-
|
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
42
|
end
|
43
43
|
|
44
|
+
raise "No #{event.type} results for: #{season} #{country}" if results_link.nil?
|
45
|
+
click(results_link) if event.qualifying?
|
44
46
|
table = page.parser.xpath('//table[contains(@class, "raceResults")]')
|
45
|
-
raise "No results for: #{season} #{country}" if table.empty?
|
46
47
|
|
47
48
|
event.parse_results_table(table)
|
48
|
-
event
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
data/lib/f1results/event.rb
CHANGED
@@ -32,7 +32,7 @@ module F1Results
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def parse_results_table(table)
|
35
|
-
data = table.xpath('//tr
|
35
|
+
data = table.xpath('//tr[not(position()=1)]').map do |row|
|
36
36
|
row.xpath('./td').map do |col|
|
37
37
|
col.text.strip
|
38
38
|
end
|
@@ -44,6 +44,8 @@ module F1Results
|
|
44
44
|
result.index = i + 1
|
45
45
|
@results << result unless result.position.nil?
|
46
46
|
end
|
47
|
+
|
48
|
+
self
|
47
49
|
end
|
48
50
|
end
|
49
51
|
end
|
data/lib/f1results/result.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module F1Results
|
2
2
|
class Result
|
3
|
-
attr_accessor :index, :position, :driver, :driver_number, :team, :
|
3
|
+
attr_accessor :index, :position, :driver, :driver_number, :team, :laps
|
4
4
|
|
5
5
|
def initialize(row = nil)
|
6
6
|
build(row) unless row.nil?
|
@@ -17,25 +17,18 @@ module F1Results
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def time_or_retired=(str)
|
21
|
-
if /^[0-9]|\+/ =~ str
|
22
|
-
@time = str
|
23
|
-
else
|
24
|
-
@retired = str
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def time_or_retired
|
29
|
-
time || retired
|
30
|
-
end
|
31
|
-
|
32
20
|
private
|
33
21
|
|
34
22
|
def build(row)
|
23
|
+
row.map! do |col|
|
24
|
+
col = col.strip.gsub(/\s+/, ' ')
|
25
|
+
col == '' ? nil : col
|
26
|
+
end
|
35
27
|
self.position = row[0]
|
36
28
|
@driver_number = row[1].to_i
|
37
29
|
@driver = row[2]
|
38
30
|
@team = row[3]
|
31
|
+
row
|
39
32
|
end
|
40
33
|
end
|
41
34
|
|
@@ -46,34 +39,50 @@ module F1Results
|
|
46
39
|
[position, driver_number, driver, team, q1, q2, q3, laps]
|
47
40
|
end
|
48
41
|
|
42
|
+
def time
|
43
|
+
q3 || q2 || q1
|
44
|
+
end
|
45
|
+
|
49
46
|
private
|
50
47
|
|
51
48
|
def build(row)
|
49
|
+
row = super
|
52
50
|
@q1 = row[4]
|
53
51
|
if row.length > 5
|
54
52
|
@q2 = row[5]
|
55
53
|
@q3 = row[6]
|
56
54
|
@laps = row[7].to_i
|
57
55
|
end
|
58
|
-
super
|
59
56
|
end
|
60
57
|
end
|
61
58
|
|
62
59
|
class RaceResult < Result
|
63
|
-
attr_accessor :grid, :points
|
60
|
+
attr_accessor :time_or_retired, :time, :retired, :grid, :points
|
64
61
|
|
65
62
|
def to_a
|
66
63
|
[position, driver_number, driver, team, laps, time_or_retired, grid, points]
|
67
64
|
end
|
68
65
|
|
66
|
+
def time_or_retired=(str)
|
67
|
+
if /^[0-9]|\+/ =~ str
|
68
|
+
@time = str
|
69
|
+
else
|
70
|
+
@retired = str
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def time_or_retired
|
75
|
+
time || retired
|
76
|
+
end
|
77
|
+
|
69
78
|
private
|
70
79
|
|
71
80
|
def build(row)
|
81
|
+
row = super
|
72
82
|
@laps = row[4].to_i
|
73
83
|
self.time_or_retired = row[5]
|
74
84
|
@grid = row[6].to_i
|
75
85
|
@points = row[7].to_i
|
76
|
-
super
|
77
86
|
end
|
78
87
|
end
|
79
88
|
end
|
data/lib/f1results/version.rb
CHANGED
data/test/result_test.rb
CHANGED
@@ -22,6 +22,14 @@ class ResultTest < MiniTest::Unit::TestCase
|
|
22
22
|
assert_equal 'Gear box', result.retired
|
23
23
|
end
|
24
24
|
|
25
|
+
def test_qualifying_time
|
26
|
+
result = F1Results::QualifyingResult.new
|
27
|
+
result.q1 = '1:46.000'
|
28
|
+
result.q2 = '1:46.515'
|
29
|
+
result.q3 = nil
|
30
|
+
assert_equal '1:46.515', result.time
|
31
|
+
end
|
32
|
+
|
25
33
|
def test_parse_race
|
26
34
|
result = F1Results::RaceResult.new(['5', '9', 'Kimi Räikkönen', 'Lotus-Renault', '52', '+10.3 secs', '6', '10'])
|
27
35
|
assert_equal 5, result.position
|
@@ -46,6 +54,20 @@ class ResultTest < MiniTest::Unit::TestCase
|
|
46
54
|
assert_equal 25, result.laps
|
47
55
|
end
|
48
56
|
|
57
|
+
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
|
60
|
+
assert_equal nil, result.q2
|
61
|
+
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
|
69
|
+
end
|
70
|
+
|
49
71
|
def test_race_to_a
|
50
72
|
result = F1Results::RaceResult.new(['5', '9', 'Kimi Räikkönen', 'Lotus-Renault', '52', '+10.3 secs', '6', '10'])
|
51
73
|
assert_equal [5, 9, 'Kimi Räikkönen', 'Lotus-Renault', 52, '+10.3 secs', 6, 10], result.to_a
|
metadata
CHANGED
@@ -1,94 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: f1results
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Darren Jeacocke
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-04-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: mechanize
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: terminal-table
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: minitest
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: webmock
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
description: Get F1 results from formula1.com
|
@@ -111,26 +100,25 @@ files:
|
|
111
100
|
- LICENSE
|
112
101
|
homepage: https://github.com/daz/f1results
|
113
102
|
licenses: []
|
103
|
+
metadata: {}
|
114
104
|
post_install_message:
|
115
105
|
rdoc_options: []
|
116
106
|
require_paths:
|
117
107
|
- lib
|
118
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
109
|
requirements:
|
121
|
-
- -
|
110
|
+
- - '>='
|
122
111
|
- !ruby/object:Gem::Version
|
123
112
|
version: '0'
|
124
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
114
|
requirements:
|
127
|
-
- -
|
115
|
+
- - '>='
|
128
116
|
- !ruby/object:Gem::Version
|
129
117
|
version: '0'
|
130
118
|
requirements: []
|
131
119
|
rubyforge_project:
|
132
|
-
rubygems_version:
|
120
|
+
rubygems_version: 2.0.2
|
133
121
|
signing_key:
|
134
|
-
specification_version:
|
122
|
+
specification_version: 4
|
135
123
|
summary: F1 Results
|
136
124
|
test_files: []
|