The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

require('strict')

local p = {}
local getArgs = require('Module:Arguments').getArgs

local dates = {
	["17.0.0"] = "2025-09-09",
	["16.0.0"] = "2024-09-10",
	["15.1.0"] = "2023-09-12",
	["15.0.0"] = "2022-09-13",
	["14.0.0"] = "2021-09-14",
	["13.0.0"] = "2020-03-10",
	["12.1.0"] = "2019-05-07",
	["12.0.0"] = "2019-03-05",
	["11.0.0"] = "2018-06-05",
	["10.0.0"] = "2017-06-20",
	["9.0.0"]  = "2016-06-21",
	["8.0.0"]  = "2015-06-17",
	["7.0.0"]  = "2014-06-16",
	["6.3.0"]  = "2013-09-30",
	["6.2.0"]  = "2012-09-26",
	["6.1.0"]  = "2012-01-31",
	["6.0.0"]  = "2010-10-11",
	["5.2.0"]  = "2009-10-01",
	["5.1.0"]  = "2008-04-04",
	["5.0.0"]  = "2006-07-14",
	["4.1.0"]  = "March 2004",
	["4.0.1"]  = "August 2003",	
	["4.0.0"]  = "April 2003",
	["3.2.0"]  = "March 2002",
	["3.1.1"]  = "May 2001",
	["3.1.0"]  = "March 2001",
	["3.0.1"]  = "August 2000",
	["3.0.0"]  = "September 1999",
	["2.1.9"]  = "April 1999",
	["2.1.8"]  = "December 1998",
	["2.1.5"]  = "August 1998",
	["2.1.2"]  = "May 1998",
	["2.0.0"]  = "July 1996",
	["1.1.5"]  = "July 1995",
	["1.1.0"]  = "June 1993",	
	["1.0.1"]  = "June 1992",
	["1.0.0"]  = "October 1991",
}

local isbn = {
	["17.0.0"] = "978-1-936213-35-1",
	["16.0.0"] = "978-1-936213-34-4",
	["15.1.0"] = "978-1-936213-33-7",
	["15.0.0"] = "978-1-936213-32-0",
	["14.0.0"] = "978-1-936213-29-0",
	["13.0.0"] = "978-1-936213-26-9",
	["12.1.0"] = "978-1-936213-25-2",
	["12.0.0"] = "978-1-936213-22-1",
	["11.0.0"] = "978-1-936213-19-1",
	["10.0.0"] = "978-1-936213-16-0",
	["9.0.0"]  = "978-1-936213-13-9",
	["8.0.0"]  = "978-1-936213-10-8",
	["7.0.0"]  = "978-1-936213-09-2",
	["6.3.0"]  = "978-1-936213-08-5",
	["6.2.0"]  = "978-1-936213-07-8",
	["6.1.0"]  = "978-1-936213-02-3",
	["6.0.0"]  = "978-1-936213-01-6",
	["5.2.0"]  = "978-1-936213-00-9",
	["5.1.0"]  = "0-321-48091-0",
	["5.0.0"]  = "0-321-48091-0",
	["4.1.0"]  = "0-321-18578-1",
	["4.0.1"]  = "0-321-18578-1",	
	["4.0.0"]  = "0-321-18578-1",
}

local latest = "17.0.0"

function p.Date(frame)
	local v = p.Version(frame)
	local d = dates[v]
	return d
end

function p.ISBN(frame)
	local v = p.Version(frame)
	local d = isbn[v]
	if d then
		return d
	end
end

function p.Location(frame)
	local f = getArgs(frame)
	local l = p._Version(f[1])
	if l[1] < 15 or (l[1] == 15 and l[2] < 1) then
		return "Mountain View, California"
	end
	return "South San Francisco, California"
end

function p.Version(frame)
	local f = getArgs(frame)
	if f[1] == "" then
		return latest
	end

	return table.concat(p._Version(f[1]), ".")
end

function p._Version(s)
	local res = {0, 0, 0}
	if s == nil then
		s = latest
	end
	
	local i = 1
	for token in string.gmatch(s, "[^%.]+") do
		res[i] = tonumber(token)
		i = i + 1
		if i == 4 then
			break
		end
	end
	
	return res
end

return p