Module:ClassDates

Revision as of 02:33, 25 August 2026 by Admin (talk | contribs) (Eight-week class dates and graduation counts)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:ClassDates/doc

local p = {}

-- Eight-week MITC class dates and graduation counts from Beverley Driver Eddy
-- (Ritchie Boy Secrets), via theritchieboys.com / By The Numbers spreadsheet.
local DATA = {
	['1'] = { dates = '27 July – 19 September 1942', graduated = '32 of 36' },
	['2'] = { dates = '24 August – 17 October 1942', graduated = '125 of 256' },
	['3'] = { dates = '2 November – 23 December 1942', graduated = '300 of 341' },
	['4'] = { dates = '6 January – 6 March 1943', graduated = '359 of 454' },
	['5'] = { dates = '8 February – 9 April 1943', graduated = '471 of 555' },
	['6'] = { dates = '13 March – 11 May 1943', graduated = '426 of 559' },
	['7'] = { dates = '15 April – 12 June 1943', graduated = '537 of 609' },
	['8'] = { dates = '17 May – 16 July 1943', graduated = '402 of 556' },
	['9'] = { dates = '21 June – 18 August 1943', graduated = '413 of 602' },
	['10'] = { dates = '23 July – 20 September 1943', graduated = '537 of 645' },
	['11'] = { dates = '25 August – 23 October 1943', graduated = '427 of 511' },
	['12'] = { dates = '27 September – 25 November 1943', graduated = '394 of 461' },
	['13'] = { dates = '30 October – 23 December 1943', graduated = '460 of 516' },
	['14'] = { dates = '2 December 1943 – 31 January 1944', graduated = '427 of 503' },
	['15'] = { dates = '4 January – 3 March 1944', graduated = '359 of 552' },
	['16'] = { dates = '6 February – 5 April 1944', graduated = '513 of 613' },
	['17'] = { dates = '11 March – 8 May 1944', graduated = '511 of 696' },
	['18'] = { dates = '13 April – 10 June 1944', graduated = '622 of 708' },
	['19'] = { dates = '16 May – 13 July 1944', graduated = '489 of 583' },
	['20'] = { dates = '19 June – 16 August 1944', graduated = '355 of 551' },
	['21'] = { dates = '21 July – 18 September 1944', graduated = '309 of 416' },
	['22'] = { dates = '23 August – 21 October 1944', graduated = '344 of 465' },
	['23'] = { dates = '25 September – 23 November 1944', graduated = '360 of 576' },
	['24'] = { dates = '26 October – 29 December 1944', graduated = '514 of 653' },
	['25'] = { dates = '30 November 1944 – 29 January 1945', graduated = '579 of 779' },
	['26'] = { dates = '3 January – 3 March 1945', graduated = '418 of 580' },
	['27'] = { dates = '5 February – 5 April 1945', graduated = '237 of 329' },
	['28'] = { dates = '11 March – 10 May 1945', graduated = '257 of 344' },
	['29'] = { dates = '13 April – 12 June 1945', graduated = '265 of 548' },
	['30'] = { dates = '18 May – 17 July 1945', graduated = '121 of 148' },
	['31'] = { dates = '26 July – 22 September 1945', graduated = '74 of 108' },
}

local function trim(s)
	return (mw.ustring.gsub(s or '', '^%s*(.-)%s*$', '%1'))
end

function p.lookup(num)
	return DATA[trim(tostring(num or ''))]
end

function p.dates(frame)
	local info = p.lookup(frame.args[1] or frame.args.class or '')
	if not info then
		return ''
	end
	return info.dates
end

function p.graduated(frame)
	local info = p.lookup(frame.args[1] or frame.args.class or '')
	if not info then
		return ''
	end
	return info.graduated
end

-- Wikitext blurb for Template:Class
function p.summary(frame)
	local num = trim(frame.args[1] or '')
	local info = p.lookup(num)
	if not info then
		return ''
	end
	return string.format(
		"'''Dates:''' %s<br />'''Graduated:''' %s (eight-week MITC class). See [[By The Numbers/Eight Week Classes - Dates & Graduation Numbers|By The Numbers]] for all classes.",
		info.dates,
		info.graduated
	)
end

return p