World Library  
Flag as Inappropriate
Email this Article

2008 Tour de France

 

2008 Tour de France


The 2008 Tour de France was the 95th Tour de France. The event took place from 5–27 July 2008. Starting in the French city of Brest, the tour entered Italy on the 15th stage and returned to France during the 16th, heading for Paris, its regular final destination, which was reached in the 21st stage. The race was won by Carlos Sastre.

Unlike previous years, time bonuses were no longer awarded for intermediate sprints and for high placement on each stage. This altered the way the General Classification was awarded in comparison to previous seasons.

Contents

  • Teams 1
  • Pre-race favourites 2
  • Stages 3
  • Race overview 4
  • Classification leadership 5
  • Final standings 6
    • General classification 6.1
    • Points classification 6.2
    • Mountains classification 6.3
    • Young riders' classification 6.4
    • Team classification 6.5
  • Prize money 7
  • Doping 8
  • See also 9
  • Notes and references 10
  • External links 11

Teams

Long running disputes between the event organisers, the ProTour event must be open to all member teams of the UCI's top level. The ASO made it clear that, despite changes in team management and personnel, it intended to exclude from the event as a result its involvement in the doping scandals that marred the 2007 Tour and its links to the 2006 Operación Puerto doping case. This meant that the champion (Alberto Contador) and third-place finisher (Levi Leipheimer) from 2007, both of whom had since signed with Astana, could not compete in the 2008 Tour.[2]

The ASO announced on 20 March 2008 that all ProTour teams except Astana would be invited, along with three "wildcard" teams: , , and (subsequently renamed as [3]). With each team consisting of nine riders, 180 riders started the Tour.

The 20 teams invited to the race were:[4]

  • [5]

Pre-race favourites

Because was not invited to the 2008 Tour de France, the winner of the 2007 Tour de France, Alberto Contador, the 3rd-place finisher Levi Leipheimer and the 2004 and 2006 Tour de France runner up Andreas Klöden did not compete. Ten days before the start of the tour, Contador picked Cadel Evans as the likely winner for 2008.[6] Shown in the table below are the riders that, according to the bookmakers[7] in the months before the start of the 2008 Tour de France, had a chance of winning the 2008 Tour better than or equal to 25/1. The odds shown are the odds in July 2008, directly before the start of the race. Thomas Dekker and Michael Rogers were also given odds in this range, but were not included in the Tour de France.

Pre-race favourites and their final results
Rider Team Notes Decimal Odds
July 2008
Position
Final Standings (time)
Cadel Evans 2nd place 2007 Tour de France 3.25 022nd (+ 58")
Alejandro Valverde 6th place 2007 Tour de France 4.50 099th (+ 7' 12")
Denis Menchov 5th place in 2006 Tour de France 7.00 044th (+ 2' 10")
Carlos Sastre 4th place in 2007 Tour de France 11.00 011st (87h 52' 52")
Damiano Cunego Best young rider 2006 Tour de France 11.00 96Did not start stage 19
Andy Schleck 2nd place 2007 Giro d'Italia 13.00 1212th (+ 11' 32")
Roman Kreuziger 1st 2008 Tour de Suisse 21.00 1313th (+ 12' 59")
Mauricio Soler King of Mountains 2007 Tour de France 26.00 99Did not finish stage 5
Samuel Sánchez 3rd place 2007 Vuelta a España 26.00 077th (+ 6' 25")
Stijn Devolder Winner 2008 Tour of Flanders 26.00 97Did not finish stage 15
Haimar Zubeldia 5th in 2007 Tour de France 26.00 4545th (+ 1h 27' 00")
Kim Kirchen 7th place 2007 Tour de France 34.00 088th (+ 6' 55")
Riccardo Riccò 2nd place 2008 Giro d'Italia 34.00 98Did not start stage 12
Legend
Did not finish
Finished in Top 5

Stages

In previous years, the Tour started with a prologue, followed by a week of flat stages. The flat stages were dominated by the sprinters' teams, and the yellow jersey was worn by a sprinter who had a good prologue. At the presentation of the Tour de France 2008 schedule, Tour Director Christian Prudhomme announced that the 2008 Tour would be different: "We have wanted a first week of racing with much more rhythm. With no prologue, an uphill finish that will suit different types of sprinters at the end of stage one, with a short time trial on stage four and the first mountain at Super-Besse only 48 hours later, we have decided to change the scenario."[8] The time bonuses at the end of each stage were removed, and there was 82 kilometres (51 mi) of time trials, less than usual.

The 2008 Tour de France was almost entirely in France, with only a small part in Italy.
Stage results[9][10]
Stage Date Course Distance Type Winner
1 5 July BrestPlumelec 197.5 km (122.7 mi) Flat stage  Alejandro Valverde (ESP)
2 6 July AuraySaint-Brieuc 164.5 km (102.2 mi) Flat stage  Thor Hushovd (NOR)
3 7 July Saint-MaloNantes 208.0 km (129.2 mi) Flat stage  Samuel Dumoulin (FRA)
4 8 July CholetCholet 29.5 km (18.3 mi) Individual time trial  Kim Kirchen (LUX)[11]
5 9 July CholetChâteauroux 232.0 km (144.2 mi) Flat stage  Mark Cavendish (GBR)
6 10 July AigurandeSuper-Besse Sancy 195.5 km (121.5 mi) Transition stage  Alejandro Valverde (ESP)[12]
7 11 July BrioudeAurillac 159.0 km (98.8 mi) Transition stage  Luis León Sánchez (ESP)
8 12 July FigeacToulouse 172.5 km (107.2 mi) Flat stage  Mark Cavendish (GBR)
9 13 July ToulouseBagnères-de-Bigorre 224.0 km (139.2 mi) Mountain stage  Vladimir Efimkin (RUS)[13]
10 14 July PauHautacam 156.0 km (96.9 mi) Mountain stage  Juan José Cobo (ESP)[14]
15 July Rest day
11 16 July LannemezanFoix 167.5 km (104.1 mi) Transition stage  Kurt Asle Arvesen (NOR)
12 17 July LavelanetNarbonne 168.5 km (104.7 mi) Flat stage  Mark Cavendish (GBR)
13 18 July NarbonneNîmes 182.0 km (113.1 mi) Flat stage  Mark Cavendish (GBR)
14 19 July NîmesDigne-les-Bains 194.5 km (120.9 mi) Flat stage  Óscar Freire (ESP)
15 20 July Embrun[15]Prato Nevoso 183.0 km (113.7 mi) Mountain stage  Simon Gerrans (AUS)
21 July Rest day
16 22 July CuneoJausiers 157.0 km (97.6 mi) Mountain stage  Cyril Dessel (FRA)
17 23 July EmbrunAlpe d'Huez 210.5 km (130.8 mi) Mountain stage  Carlos Sastre (ESP)
18 24 July Bourg-d'OisansSaint-Étienne 196.5 km (122.1 mi) Transition stage  Marcus Burghardt (GER)
19 25 July RoanneMontluçon 165.5 km (102.8 mi) Flat stage  Sylvain Chavanel (FRA)
20 26 July CérillySaint-Amand-Montrond 53.0 km (32.9 mi) Individual time trial  Fabian Cancellara (SUI)[11]
21 27 July ÉtampesParis (Champs-Élysées) 143.0 km (88.9 mi) Flat stage  Gert Steegmans (BEL)
Total: 3,559.5 km (2,211.8 mi)

Race overview

Romain Feillu was the only French cyclist to wear the yellow jersey in the 2008 Tour de France; he wore it for one day after stage 3.

In the first week of the 2008 Tour de France, the stages were mostly flat. As traditionally in the Tour de France, this resulted in small breakaways of cyclists, and the sprinters' teams trying to get them back. In the first stage, the sprinters won, with Thor Hushovd winning the stage, but in the second stage, four cyclists managed to stay away. The fourth stage was a time trial, won by Stefan Schumacher, who took over the lead. In the fifth stage, the sprinters won the battle and Mark Cavendish won the stage.

The Massif Central mountains were visited in stage six and seven. In stage six, all the breakaways were caught, and the favourites stayed together and finished together. In stage seven, the same scenario, only now Luis León Sánchez managed to stay a few seconds ahead and win the stage. The eighth stage was a sprinter stage, won by Cavendish. Then, from stage nine, the Pyrénées were climbed. Riccardo Riccò broke away from the bunch on the final climb, and won the stage. On stage 10, a group of four with some main contenders escaped, and Leonardo Piepoli won the stage. Stage eleven had easier climbs, and a group of four riders, not important for the overall classification, were allowed to break away and win 14 minutes.

Stages twelve to fourteen were flat stages, and were dominated by the sprinters. Mark Cavendish won another two stages, and Óscar Freire took his first. In the fifteenth stage, a group of four cyclists escaped and stayed away, a similar thing happened in stage sixteen. In the seventeenth stage, Carlos Sastre placed his decisive attack for the general classification, and also won the stage. The eighteenth and nineteenth stage again saw breakaways of cyclists not important for the general classification. The twentieth stage, a time trial, was won by Stefan Schumacher who had also won the first time trial. The last stage was a sprinters' stage, won by Gert Steegmans.

Classification leadership

Stage Winner General classification
Points classification
Mountains classification
Young rider classification
Team classification
Combativity award
1 Alejandro Valverde Alejandro Valverde Alejandro Valverde Thomas Voeckler Riccardo Riccò Lilian Jegou
2 Thor Hushovd Kim Kirchen Sylvain Chavanel
3 Samuel Dumoulin Romain Feillu Romain Feillu William Frischkorn
4 Kim Kirchen Stefan Schumacher Thomas Lövkvist no award
5 Mark Cavendish Thor Hushovd Nicolas Vogondy
6 Alejandro Valverde Kim Kirchen Kim Kirchen Sylvain Chavanel Sylvain Chavanel
7 Luis León Sánchez David de la Fuente Luis León Sánchez
8 Mark Cavendish Óscar Freire Laurent Lefevre
9 Vladimir Efimkin Kim Kirchen Andy Schleck Sebastian Lang
10 Juan José Cobo Cadel Evans Óscar Freire Riccardo Riccò Riccardo Riccò Rémy Di Gregorio
11 Kurt Asle Arvesen Amaël Moinard
12 Mark Cavendish Sebastian Lang Vincenzo Nibali Arnaud Gérard
13 Mark Cavendish Niki Terpstra
14 Óscar Freire José Ivan Gutierrez
15 Simon Gerrans Fränk Schleck Bernhard Kohl[16] Egoi Martínez
16 Cyril Dessel Andy Schleck Stefan Schumacher
17 Carlos Sastre Carlos Sastre Peter Velits
18 Marcus Burghardt Marcus Burghardt
19 Sylvain Chavanel Sylvain Chavanel
20 Fabian Cancellara no award
21 Gert Steegmans Nicolas Vogondy
Final Carlos Sastre Óscar Freire None[16] Andy Schleck Sylvain Chavanel
Jersey wearers when one rider is leading two or more competitions

Final standings

Legend
     Denotes the leader of the General classification[9]      Denotes the leader of the Mountains classification[17]
     Denotes the leader of the Points classification[17]      Denotes the leader of the Young rider classification[17]
     Denotes the leader of the Team classification[17]

General classification

Final general classification (1–10)
Rank Name Team Time
1  Carlos Sastre (ESP) Team CSC 87h 52' 52"
2  Cadel Evans (AUS) Silence-Lotto +0' 58"
3  Denis Menchov (RUS) Rabobank +2' 10"
4  Christian Vande Velde (USA) Garmin +3' 05"
5  Fränk Schleck (LUX) Team CSC +4' 28"
6  Samuel Sánchez (ESP) Euskaltel +6' 25"
7  Kim Kirchen (LUX) Team Columbia +6' 55"
8  Alejandro Valverde (ESP) Caisse d'Epargne +7' 12"
9  Tadej Valjavec (SLO) Ag2r +9' 05"
10  Vladimir Efimkin (RUS) Ag2r +9' 55"

Points classification

Rank Rider Team Points
1 Freire was awarded the final green jersey as points classification winner 270
2 220
3 217
4 181
5 155
6 136
7 131
8 129
9 119
10 116

Mountains classification

Rank Rider Team Points
1 None[16]
2 Sastre was awarded the final yellow jersey as general classification winner 80
3 80
4 65
5 62
6 61
7 61
8 58
9 52
10 51

Young riders' classification

Rank Rider Team Time
1 Schleck was awarded the final white jersey as youth classification winner 88h 04' 24"
2 + 1' 27"
3 + 17' 01"
4 + 24' 09"
5 + 1h 08' 34"
6 + 1h 13' 55"
7 + 1h 24' 49"
8 + 1h 38' 17"
9 + 1h 38' 22"
10 + 1h 44' 07"

Team classification

Rank Team Time
1 263h 29' 57"
2 + 15' 35"
3 + 1h 05' 26"
4 + 1h 16' 26"
5 + 1h 17' 15"
6 + 1h 20' 28"
7 + 1h 23' 00"
8 + 1h 26' 24"
9 + 1h 27' 40"
10 + 1h 37' 16"

Prize money

A total prize fund of approximately €3.25 million was awarded throughout the tour. In addition, each team received €51,243 towards expenses of participation, with an additional €1,600 per rider who completed the race, provided that at least seven did so.[18][19]
1st 2nd 3rd 4th 5th Notes
Individual stages €8,000 €4,000 €2,000 €1,200 €830 Prizes down to 20th place (€200).
General classification €450,000 €200,000 €100,000 €70,000 €50,000 All finishers earn at least €400. The wearer of the Yellow Jersey each day gets €350.
Overall points classification €25,000 €15,000 €10,000 €4,000 €3,500 Additional prize money down to 8th place (€2,000). The leader of the ranking each day gets €300.
Intermediate sprints €800 €450 €300 There are 45 such sprints during the tour.
Mountains classification €25,000 €15,000 €10,000 €4,000 €3,500 Additional prize money down to 8th place (€2,000). The leader of the ranking each day gets €300.
Hors category climbs €800 €450 €300 There are 8 HC cols during the tour. There are additional €5,000 prizes for the riders first over the Tourmalet (stage 10) and the Galibier (stage 17).
First category climbs €650 €400 €150 There are 4 such mountains during the tour.
Second category climbs €500 €250 There are 5 such climbs during the tour.
Third category climbs €300 There are 14 such climbs during the tour.
Fourth category climbs €200 There are 26 such climbs during the tour.
Young riders' classification €20,000 €15,000 €10,000 €5,000 The first young rider each day gets €500, and the leader of the ranking each day gets €300.
Combativity prize €20,000 A prize of €2,000 is awarded for each stage except time trials.
Team classification in the Tour de France €50,000 €30,000 €20,000 €12,000 €8,000 The team with the fastest time for its first three finishers each day gets €2,800.

By tradition, a team's winnings were pooled and shared among the riders and support team. Team CSC, the team of Tour winner Sastre, won the most prize money, more than €600,000. Saunier Duval's prize money was not awarded after the positive tests of Riccardo Riccò.[20]

Team CSC received €450,000 for the overall victory of Carlos Sastre.
Team name Prize money
1 Team CSC Saxo Bank €621,210
2 Silence-Lotto €233,450
3 Gerolsteiner €192,370
4 Rabobank €154,250
5 Team Columbia €113,450
6 Cofidis €91,460
7 Garmin-Chipotle €82,570
8 Ag2r-La Mondiale €71,060
9 Caisse d'Epargne €59,510
10 Crédit Agricole €55,450
11 Euskaltel-Euskadi €53,130
12 Liquigas €49,220
13 Française des Jeux €45,780
14 Team Milram €35,490
15 Agritubel €32,540
16 Quick Step €31,470
17 Bouygues Télécom €24,900
18 Barloworld €22,480
19 Lampre €9,840

Doping

Writing on the street during Tour de France 2008 at Alpe d'Huez, satirically saying that EPO is available in 500 meters.

On 26 May 2008, the 2007 green jersey (points) winner Tom Boonen tested positive for cocaine. Since this was outside competition, Boonen was not sanctioned by the UCI or WADA, but he was nevertheless barred from the 2008 Tour de France.[21][22]

Following protracted disagreement between the organisers of the ASO) and the UCI, the race was sanctioned by the Fédération Française de Cyclisme (FFC), as was the 2008 Paris–Nice in March. Thus the FFC were in charge of the doping controls before and during the race, and rather than increasing the number of doping controls during the Tour, they applied a more targeted approach on suspect riders.[23] The French government's anti-doping agency AFLD carried out approximately 60 random and targeted tests in the weeks leading up to the Tour. They took blood samples from all the 180 riders in a two-day period just before the first stage, and during the race took samples from up to 14 riders a day shortly after the stage was finished, 250 tests being run in total.[24] The Italian National Olympic Committee (CONI) also performed unannounced doping tests of riders at the finish of stage 15, which ended at the ski resort of Prato Nevoso, Italy.[25] On 3 July 2008, France enacted a law criminalizing using or trafficking in doping substances.[26]

On 11 July news broke that Spanish rider Manuel Beltrán tested positive for erythropoietin after the first stage of the tour. Blood abnormalities before the tour start had led AFLD to target the rider. Beltrán's team Liquigas withdrew him from the tour with immediate effect. French law enforcement authorities questioned Beltrán over possible offences and searched his hotel room, but he claimed his innocence. The B-Sample has not yet been tested.[27]

On 13 July, prior to the ninth stage, it was revealed that AFLD had informed team doctors that five riders had unusually high hematocrit levels. The Italian press reported that Riccardo Riccò, who won the stage later that day, had been selected for testing several times during the first week, which led to a suspicion that he was among those whose teams had been notified. Riccò has for some time been known to have a naturally high hematocrit level of 51%, above the 50%-level which usually is taken to be an indicator of possible blood manipulation. Riccò stated that he has a license confirming that this is a natural, long-term condition, which he gave to the doping agencies before the start of the race,[28] but he later admitted to the offence at a hearing of the Italian National Olympic Committee (CONI).[29]

On 16 July Barloworld started the 11th stage without Moisés Dueñas, who had been withdrawn from the team after being tested positive for EPO at the end of the time trial fourth stage.[30] Barloworld Ltd, two days later, announced that they were withdrawing from sponsorship after this year's Tour de France,[31] but on 28 October, they announced that they would sponsor the team for another year.[32]

Stefan Schumacher tested positive for MIRCERA following additional testing of his blood samples.

On 17 July, shortly before the start of stage 12, Ricardo Riccò and the rest of the Saunier Duval-Scott team, withdrew from the race after the announcement that he had tested positive for MIRCERA, a new type of EPO, at the end of stage 4.[33][34] Leonardo Piepoli, winner of stage 10, was sacked by his team for "violation of the team's ethics code" the following day, though no positive test was reported at that time.[35] Almost 3 months later his tests came back positive for samples taken one day prior to the start of the Tour, on 4 July, and also on 15 July, on the rest day in Pau.[36]

On the last day of the race, but after the end of the stage, Dmitry Fofonov was announced to have tested positive for the banned stimulant heptaminol after Stage 18. He was asked for a medical exemption to use the stimulant, but did not produce one.[37] He was subsequently fired by his team Crédit Agricole.[38]

After the race ended, French cyclist Jimmy Casper was suspended from Agritubel because he tested positive after the stage to Super Besse for glucocorticoids, an asthma drug that is banned unless the user has a medical exemption for its use. Casper, an asthmatic, carried a therapeutic use exemptions (TUE) for the last twelve years but failed to renew this exemption. His authorisation expired on 29 May and was not renewed before the 2008 Tour de France.[39] The French cycling federation's disciplinary commission exonerated Casper.[40]

In late September it was announced that several Tour de France riders were to have their blood samples retested for traces of EPO. Pierre Bordry, the head of AFLD, claimed the testing involved riders who were already under scrutiny for suspicious urine samples. AFLD had suspicion that there was MIRCERA in some samples but the laboratory could not say definitively. The urine tests were somewhat unreliable at giving definitive results, so the AFLD decided to order the blood samples taken before and during the Tour for additional testing with a newly developed CERA blood test.[41][42]

As a result of this additional testing, both Leonardo Piepoli and Stefan Schumacher tested positive for the same substance which Riccò used, MIRCERA. The riders were declared positive by AFLD.[36]

On 13 October 2008, the AFLD announced that Bernhard Kohl, who finished in third place overall and winner of the climbers' competition, had also tested positive for MIRCERA on 3 and 15 July, before and during the Tour de France.[43][44] Initial results were verified, and Kohl also confessed to doping. His third-place overall finish in the 2008 Tour and his first place in the King of the Mountains competition are considered vacancies in the Tour's official history.[16]

See also

Notes and references


-- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --


local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}


-- Helper functions


local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end


-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.


function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end

function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end


-- Hatnote -- -- Produces standard hatnote text. Implements the template.


function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --


local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}


-- Helper functions


local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end


-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.


function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end

function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end


-- Hatnote -- -- Produces standard hatnote text. Implements the template.


function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p
  1. ^
  2. ^
  3. ^
  4. ^
  5. ^ renamed with effect from the date of commencement of the 2008 Tour de France, formerly known as Team High Road :
  6. ^
  7. ^ All odds taken from skybet.com
  8. ^
  9. ^ a b
  10. ^
  11. ^ a b
  12. ^
  13. ^
  14. ^
  15. ^ The 15th stage was due to start at Digne-les-Bains but due to the risk of rock falls in the climb up the Col Agnel (2744 m).
  16. ^ a b c d
  17. ^ a b c d
  18. ^ Rules and Stakes at Le Tour.fr
  19. ^
  20. ^
  21. ^
  22. ^
  23. ^
  24. ^
  25. ^
  26. ^
  27. ^
  28. ^
  29. ^
  30. ^
  31. ^
  32. ^
  33. ^
  34. ^
  35. ^
  36. ^ a b
  37. ^
  38. ^ FOFONOV FIRED AFTER POSITIVE TEST | Sporting Life | Beijing Olympics, MotoGP, Athletics, World Rally Championship, Superbikes
  39. ^
  40. ^
  41. ^ Tour riders to have blood samples retested – cnn.com
  42. ^ Tour doping czar begins search for MIRCERA-type EPO – Yahoo Sports
  43. ^
  44. ^ Kohl a triché lui aussi, L'Equipe, 13 October 2008.

External links

  • The official Tour de France site
  • Le dico du Tour / Le Tour de France de 1947 à 2008 (French)
  • 2008 Tour de France: Stage by stage Interactive application with Google Maps
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.