World Library  
Flag as Inappropriate
Email this Article

List of Spooks episodes

Article Id: WHEBN0009505088
Reproduction Date:

Title: List of Spooks episodes  
Author: World Heritage Encyclopedia
Language: English
Subject: Version 1.0 Editorial Team/Spooks articles by quality log, Spooks, Tessa Phillips, Tariq Masood, Zoe Reynolds
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

List of Spooks episodes

Spooks (known as MI-5 in certain countries) is a BAFTA-winning British spy drama television series, created by David Wolstencroft. It debuted on BBC One on 13 May 2002. The series follows the activities of the intelligence officers of Section D in MI5.

From its debut until its finale on 23 October 2011, 86 episodes were aired across ten complete series. The first series has six episodes, and series two through six have 10 episodes each. Series seven through nine have eight episodes each. The ninth series aired between September and November 2010. The tenth and final series, which began airing on 18 September 2011, consists of six episodes. The individual episodes have no official titles, though there are internal working titles. The USA versions air with titles, which sometimes, but not always, match the working titles.

Contents

  • Series overview 1
  • Episodes 2
    • Series 1 (2002) 2.1
    • Series 2 (2003) 2.2
    • Series 3 (2004) 2.3
    • Series 4 (2005) 2.4
    • Series 5 (2006) 2.5
    • Series 6 (2007) 2.6
    • Series 7 (2008) 2.7
    • Series 8 (2009) 2.8
    • Series 9 (2010) 2.9
    • Series 10 (2011) 2.10
  • Home video releases 3
  • Notes 4
  • References 5

Series overview

Series Episodes Originally aired Average viewers
(in millions)
Series premiere Series finale
1 6 13 May 2002 (2002-05-13) 17 June 2002 (2002-06-17) 7.49[n 1]
2 10 2 June 2003 (2003-06-02) 11 August 2003 (2003-08-11) 7.19[n 2]
3 10 11 October 2004 (2004-10-11) 13 December 2004 (2004-12-13) 5.77[n 3]
4 10 12 September 2005 (2005-09-12) 10 November 2005 (2005-11-10) 6.05[n 4]
5 10 17 September 2006 (2006-09-17) 13 November 2006 (2006-11-13) 5.97[n 5]
6 10 16 October 2007 (2007-10-16) 18 December 2007 (2007-12-18) 5.57[n 6]
7 8 27 October 2008 (2008-10-27) 8 December 2008 (2008-12-08) 5.46[n 7]
8 8 4 November 2009 (2009-11-04) 23 December 2009 (2009-12-23) 5.34[n 8]
9 8 20 September 2010 (2010-09-20) 8 November 2010 (2010-11-08) 6.33[n 9]
10 6 18 September 2011 (2011-09-18) 23 October 2011 (2011-10-23) 5.41[n 10]

Episodes

Series 1 (2002)

No. in
series
No. in
season
Title[1] Directed by[1] Written by[1] Original air date UK viewers
(millions)[2]
1 1 "Thou Shalt Not Kill" Bharat Nalluri David Wolstencroft 13 May 2002 (2002-05-13) 9.60
2 2 "Looking After Our Own" Bharat Nalluri David Wolstencroft 20 May 2002 (2002-05-20) 8.10
3 3 "One Last Dance" Rob Bailey Simon Mirren 27 May 2002 (2002-05-27) 7.30
4 4 "Traitor's Gate" Rob Bailey Howard Brenton 4 June 2002 (2002-06-04) 5.99
5 5 "The Rose Bed Memoirs" Andy Wilson Howard Brenton 10 June 2002 (2002-06-10) 6.75
6 6 "Lesser of Two Evils"
"Mean, Dirty, Nasty"[3]
Andy Wilson David Wolstencroft & Howard Brenton 17 June 2002 (2002-06-17) 7.21

Series 2 (2003)

No. in
series
No. in
season
Title[4] Directed by[4] Written by[4] Original air date UK viewers
(millions)[5]
7 1 "Legitimate Targets" Bharat Nalluri David Wolstencroft 2 June 2003 (2003-06-02) (BBC One) 8.16
8 2 "Nest of Angels" Bharat Nalluri Howard Brenton 2 June 2003 (2003-06-02) (BBC Three)[n 11] 7.87
9 3 "Spiders"
"Hackers"[6]
Rob Bailey Matthew Graham 9 June 2003 (2003-06-09) (BBC Three) 7.18
10 4 "Blood and Money" Rob Bailey Howard Brenton 16 June 2003 (2003-06-16) (BBC Three) 7.38
11 5 "I Spy Apocalypse" Justin Chadwick Howard Brenton 23 June 2003 (2003-06-23) (BBC Three)[n 12] 6.30
12 6 "Without Incident"
"President's Visit"[6]
Justin Chadwick David Wolstencroft 7 July 2003 (2003-07-07) (BBC Three) 6.00[7][n 13]
13 7 "Clean Skin" Ciaran Donnelly Simon Mirren 14 July 2003 (2003-07-14) (BBC Three) 6.90
14 8 "Strike Force"
"Military Strikes"[6]
Ciaran Donnelly Steve Bailie 21 July 2003 (2003-07-21) (BBC Three) 6.68
15 9 "The Seventh Division"
"A Very Corporate Coup"[8]
Sam Miller Ben Richards 28 July 2003 (2003-07-28) (BBC Three) 6.92
16 10 "Smoke and Mirrors"
"Pit of Secrets"[6]
Sam Miller Howard Brenton 11 August 2003 (2003-08-11) (BBC One) 7.32

Series 3 (2004)

No. in
series
No. in
season
Title[9] Directed by[10][11] Written by[10][11] Original air date UK viewers
(millions)[12]
17 1 "Project Friendly Fire" Jonny Campbell Howard Brenton 11 October 2004 (2004-10-11) (BBC One) 6.77
18 2 "The Sleeper" Jonny Campbell Howard Brenton 16 October 2004 (2004-10-16) (BBC Three)[n 14] 6.48
19 3 "Who Guards the Guards?" Cilla Ware Rupert Walters 23 October 2004 (2004-10-23) (BBC Three) 6.49
20 4 "A Prayer for My Daughter" Cilla Ware Ben Richards 30 October 2004 (2004-10-30) (BBC Three) 6.33
21 5 "Love and Death" Justin Chadwick David Wolstencroft 6 November 2004 (2004-11-06) (BBC Three) 5.00
22 6 "Persephone" Justin Chadwick Ben Richards 13 November 2004 (2004-11-13) (BBC Three) 5.46
23 7 "Outsiders" Bill Anderson Raymond Khoury 20 November 2004 (2004-11-20) (BBC Three) 5.74
24 8 "Celebrity" Bill Anderson Howard Brenton 27 November 2004 (2004-11-27) (BBC Three) 5.19
25 9 "Frequently Asked Questions" Alrick Riley Rupert Walters 4 December 2004 (2004-12-04) (BBC Three) 4.92
26 10 "The Suffering of Strangers" Alrick Riley Ben Richards 13 December 2004 (2004-12-13) (BBC One) 5.33

Series 4 (2005)

No. in
series
No. in
season
Title Directed by Written by Original air date UK viewers
(millions)[13]
27 1 "The Special (Part 1)"[14] Antonia Bird Ben Richards 12 September 2005 (2005-09-12) (BBC One) 6.63
28 2 "The Special (Part 2)"[15] Antonia Bird Ben Richards 13 September 2005 (2005-09-13) (BBC One) 6.84
29 3 "Divided They Fall"[16] Alrick Riley Ben Richards 15 September 2005 (2005-09-15) (BBC Three)[n 15] 6.50
30 4 "Road Trip"[17] Alrick Riley Howard Brenton 22 September 2005 (2005-09-22) (BBC Three) 5.21
31 5 "The Book"[18] Jeremy Lovering Raymond Khoury 29 September 2005 (2005-09-29) (BBC Three) 5.20
32 6 "The Innocent"[19] Jeremy Lovering David Farr 6 October 2005 (2005-10-06) (BBC Three) 5.83
33 7 "Syria"[20] Omar Madha Raymond Khoury 13 October 2005 (2005-10-13) (BBC Three) 5.74
34 8 "The Russian"[21] Omar Madha Howard Brenton 20 October 2005 (2005-10-20) (BBC Three) 6.34
35 9 "The Sting"[22] Julian Simpson Rupert Walters 27 October 2005 (2005-10-27) (BBC Three) 5.98
36 10 "Diana"[23] Julian Simpson Howard Brenton 10 November 2005 (2005-11-10) (BBC One) 6.18

Series 5 (2006)

No. in
series
No. in
season
Title Directed by Written by Original air date UK viewers
(millions)[24]
37 1 "Gas and Oil (Part 1)" Omar Madha Ben Richards 17 September 2006 (2006-09-17) (BBC One) 6.31
38 2 "Gas and Oil (Part 2)" Omar Madha Ben Richards 17 September 2006 (2006-09-17) (BBC Three)[n 16] 5.75
39 3 "The Cell" Julian Simpson Ben Richards 18 September 2006 (2006-09-18) (BBC Three) 6.12
40 4 "World Trade" Kenny Glenaan David Farr 25 September 2006 (2006-09-25) (BBC Three) 5.79
41 5 "The Message" Kenny Glenaan Zinnie Harris 2 October 2006 (2006-10-02) (BBC Three) 5.89
42 6 "Hostage Takers (Part 1)" Andy Hay Raymond Khoury 9 October 2006 (2006-10-09) (BBC Three) 6.05
43 7 "Hostage Takers (Part 2)" Andy Hay Raymond Khoury 16 October 2006 (2006-10-16) (BBC Three) 5.53
44 8 "Agenda" Julian Simpson Julian Simpson 23 October 2006 (2006-10-23) (BBC Three) 5.97
45 9 "The Criminal" Julian Holmes Neil Cross 30 October 2006 (2006-10-30) (BBC Three) 5.80
46 10 "Aftermath" Julian Holmes David Farr 13 November 2006 (2006-11-13) (BBC One) 6.47

Series 6 (2007)

No. in
series
No. in
season
Title Directed by Written by Original air date UK viewers
(millions)[25]
47 1 "The Virus (Part 1)" Omar Madha Neil Cross 16 October 2007 (2007-10-16) (BBC One) 6.61
48 2 "The Virus (Part 2)" Omar Madha Neil Cross 16 October 2007 (2007-10-16) (BBC Three)[n 17] 5.78
49 3 "The Kidnap" Charles Beeson Rupert Walters 23 October 2007 (2007-10-23) (BBC Three) 6.12
50 4 "The Extremist" Charles Beeson David Farr 30 October 2007 (2007-10-30) (BBC Three) 5.62
51 5 "The Deal" Brendan Maher Zinnie Harris 6 November 2007 (2007-11-06) (BBC Three) 5.58
52 6 "The Courier" Brendan Maher George Tiffin 13 November 2007 (2007-11-13) (BBC Three) 5.30
53 7 "The Broadcast" Stefan Schwartz David Farr 20 November 2007 (2007-11-20) (BBC Three) 4.94
54 8 "Infiltration" Stefan Schwartz Neil Cross 27 November 2007 (2007-11-27) (BBC Three) 5.26
55 9 "Isolated" Alrick Riley Neil Cross 4 December 2007 (2007-12-04) (BBC Three) 4.84
56 10 "The School" Alrick Riley Ben Richards 18 December 2007 (2007-12-18) (BBC One) 5.68

Series 7 (2008)

No. in
series
No. in
season
Title Directed by Written by Original air date UK viewers
(millions)[26]
57 1 "New Allegiances" Colm McCarthy Neil Cross & Ben Richards 27 October 2008 (2008-10-27) (BBC One) 5.91
58 2 "Split Loyalties" Colm McCarthy Neil Cross & Ben Richards 27 October 2008 (2008-10-27) (BBC Three)[n 18] 5.63
59 3 "The Tip-Off" Peter Hoar Russell Lewis & Ben Richards 28 October 2008 (2008-10-28) (BBC Three) 5.59
60 4 "A Chance for Peace" Peter Hoar Richard McBrien 3 November 2008 (2008-11-03) (BBC Three) 5.29
61 5 "On the Brink" Edward Hall Christian Spurrier 10 November 2008 (2008-11-10) (BBC Three) 5.21
62 6 "Accidental Discovery" Edward Hall David Farr 17 November 2008 (2008-11-17) (BBC Three) 5.14
63 7 "The Mole" Sam Miller James Moran & Christian Spurrier 24 November 2008 (2008-11-24) (BBC Three) 5.00
64 8 "Nuclear Strike" Sam Miller Neil Cross 8 December 2008 (2008-12-08) (BBC One) 5.95

Series 8 (2009)

No. in
series
No. in
season
Title Directed by Written by Original air date UK viewers
(millions)[27]
65 1 "Episode 1" Alrick Riley Story: Zinnie Harris & Ben Richards
Teleplay: Ben Richards
4 November 2009 (2009-11-04) (BBC One) 6.55
66 2 "Episode 2" Alrick Riley Story: Zinnie Harris & Ben Richards
Teleplay: Ben Richards
6 November 2009 (2009-11-06) (BBC Three)[n 19] 5.11
67 3 "Episode 3" Sam Miller Christian Spurrier & Sean Reilly 13 November 2009 (2009-11-13) (BBC Three) 5.26
68 4 "Episode 4" Sam Miller David Farr 20 November 2009 (2009-11-20) (BBC Three) 5.18
69 5 "Episode 5" Alrick Riley Richard McBrien 27 November 2009 (2009-11-27) (BBC Three) 4.39
70 6 "Episode 6" Edward Hall Dennis Kelly 4 December 2009 (2009-12-04) (BBC Three) 5.11
71 7 "Episode 7" Edward Hall James Dormer 11 December 2009 (2009-12-11) (BBC Three) 3.99[28][n 20]
72 8 "Episode 8" Alrick Riley Ben Richards 23 December 2009 (2009-12-23) (BBC One) 5.91

Series 9 (2010)

No. in
series
No. in
season
Title Directed by Written by Original air date UK viewers
(millions)[29]
73 1 "Episode 1" Paul Whittington Jonathan Brackley & Sam Vincent 20 September 2010 (2010-09-20) 6.74
74 2 "Episode 2" Michael Caton-Jones David Farr 27 September 2010 (2010-09-27) 6.27
75 3 "Episode 3" Michael Caton-Jones Richard McBrien 4 October 2010 (2010-10-04) 6.04
76 4 "Episode 4" Paul Whittington Jonathan Brackley & Sam Vincent 11 October 2010 (2010-10-11) 6.37
77 5 "Episode 5" Julian Holmes Jonathan Brackley & Sam Vincent & Oliver Brown 18 October 2010 (2010-10-18) 6.35
78 6 "Episode 6" Julian Holmes Jonathan Brackley & Sam Vincent 25 October 2010 (2010-10-25) 6.36
79 7 "Episode 7" Edward Hall Anthony Neilson 1 November 2010 (2010-11-01) 6.10
80 8 "Episode 8" Edward Hall Jonathan Brackley & Sam Vincent 8 November 2010 (2010-11-08) 6.40

Series 10 (2011)

No. in
series
No. in
season
Title Directed by Written by Original air date UK viewers
(millions)[30]
81 1 "Episode 1" Alrick Riley Jonathan Brackley & Sam Vincent 18 September 2011 (2011-09-18) 5.63
82 2 "Episode 2" Alrick Riley Jonathan Brackley & Sam Vincent 25 September 2011 (2011-09-25) 5.12
83 3 "Episode 3" Julian Homes Jonathan Brackley & Sam Vincent 2 October 2011 (2011-10-02) 5.15
84 4 "Episode 4" Julian Holmes Sean Cook 9 October 2011 (2011-10-09) 5.31
85 5 "Episode 5" Bharat Nalluri Jonathan Brackley & Sam Vincent & Anthony Neilson 16 October 2011 (2011-10-16) 5.27
86 6 "Episode 6" Bharat Nalluri Jonathan Brackley & Sam Vincent 23 October 2011 (2011-10-23) 5.95

Home video releases

Series DVD release dates
Region 1 Region 2 Region 4
1 13 January 2004 (2004-01-13)[31] 16 June 2003 (2003-06-16)[32] 18 August 2003 (2003-08-18)[33]
2 11 January 2005 (2005-01-11)[34] 20 September 2004 (2004-09-20)[35] 21 March 2004 (2004-03-21)[36]
3 31 January 2006 (2006-01-31)[37] 5 September 2005 (2005-09-05)[38] 23 May 2005 (2005-05-23)[39]
4 9 January 2007 (2007-01-09)[40] 4 September 2006 (2006-09-04)[41] 21 May 2007 (2007-05-21)[42]
5 8 January 2008 (2008-01-08)[43] 10 September 2007 (2007-09-10)[44] 19 May 2008 (2008-05-19)[45]
6 20 January 2009 (2009-01-20)[46] 6 October 2008 (2008-10-06)[47] 4 August 2008 (2008-08-04)[48]
7 26 January 2010 (2010-01-26)[49] 12 October 2008 (2008-10-12)[50] 1 April 2009 (2009-04-01)[51]
8 25 January 2011 (2011-01-25)[52] 20 September 2010 (2010-09-20)[53] 3 November 2010 (2010-11-03)[54]
9 12 July 2011 (2011-07-12)[55] 28 February 2011 (2011-02-28)[56] 31 May 2011 (2011-05-31)[57]
10 6 March 2012 (2012-03-06)[58] 28 November 2011 (2011-11-28)[59] 4 April 2012 (2012-04-04)[60]

Notes


-- 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. ^ Based from the consolidated ratings from the first series for BBC One.
  2. ^ Based from the consolidated ratings from the second series for BBC One, with the exception of the sixth episode which are not available.
  3. ^ Based from the consolidated ratings from the third series for BBC One.
  4. ^ Based from the consolidated ratings from the fourth series for BBC One.
  5. ^ Based from the consolidated ratings from the fifth series for BBC One.
  6. ^ Based from the consolidated ratings from the sixth series for BBC One.
  7. ^ Based from the consolidated ratings from the seventh series for BBC One.
  8. ^ Based from the consolidated ratings from the eighth series for BBC One, with the exception of the seventh episode which are not available.
  9. ^ Based from the consolidated ratings from the ninth series for BBC One.
  10. ^ Based from the consolidated ratings from the tenth series for BBC One.
  11. ^ "Nest of Angels" was broadcast on 9 June 2003 on BBC One; the rest of the series (apart from the finale) would usually rebroadcast on BBC One seven days after the BBC Three broadcast.
  12. ^ "I Spy Apocalypse" was rebroadcast on BBC One two weeks after its original BBC Three broadcast, on 7 July 2003.
  13. ^ Official data for the consolidated viewing figures for that week was not made available on the BARB website, only overnight ratings data would be available
  14. ^ "The Sleeper" on 18 October 2004 on BBC One; the rest of the series would continue on BBC One two days after the BBC Three broadcast.
  15. ^ "Divided They Fall" was broadcast on 22 September 2005 on BBC One; the rest of the series (apart from the finale) would usually rebroadcast on BBC One seven days after the BBC Three broadcast.
  16. ^ "Gas and Oil (Part 2)" was broadcast on 18 September 2006 on BBC One; the rest of the series (apart from the finale) would usually rebroadcast on BBC One seven days after the BBC Three broadcast.
  17. ^ "The Virus, Part 2" airs right after "Part 1" on BBC Three; The series would continue on BBC One a week after the BBC Three broadcast
  18. ^ "Split Loyalties" on 28 October 2008 on BBC One; the rest of the series would continue on BBC One a week after the BBC Three broadcast
  19. ^ "Series 8, Episode 2" onward would air from 11 November 2009 onwards on BBC One
  20. ^ The episode did not appear in the top 30 viewings on the BARB website, only overnight ratings data would be available

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. ^ a b c
  2. ^
  3. ^
  4. ^ a b c
  5. ^
  6. ^ a b c d
  7. ^
  8. ^
  9. ^
  10. ^ a b
  11. ^ a b
  12. ^
  13. ^
  14. ^
  15. ^
  16. ^
  17. ^
  18. ^
  19. ^
  20. ^
  21. ^
  22. ^
  23. ^
  24. ^
  25. ^
  26. ^
  27. ^
  28. ^
  29. ^
  30. ^
  31. ^
  32. ^
  33. ^
  34. ^
  35. ^
  36. ^
  37. ^
  38. ^
  39. ^
  40. ^
  41. ^
  42. ^
  43. ^
  44. ^
  45. ^
  46. ^
  47. ^
  48. ^
  49. ^
  50. ^
  51. ^
  52. ^
  53. ^
  54. ^
  55. ^
  56. ^
  57. ^
  58. ^
  59. ^
  60. ^
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.