Module:British parliamentary session

local p = {}

function p.citation( frame )
	
	local inputDate
	if frame == mw.getCurrentFrame() then
		inputDate = frame:getParent().args[ 1 ]
		local frameArgsDate = frame.args[ 1 ]
		if frameArgsDate then
			inputDate = frameArgsDate
		end
	else
		inputDate = frame
	end
	
	inputDate = tonumber ( inputDate )
	
	if inputDate >= os.time{day=1, month=1, year=1963} then
		return os.date("%Y",inputDate)
	else
		local data = mw.loadData( 'Module:British parliamentary session/data' )
		for _, t in ipairs( data ) do
			if inputDate >= t.sDate and inputDate <= t.eDate then
				return t.citation
			end
		end
    end
end

function p.sortorder( frame )
	
	local inputDate
	if frame == mw.getCurrentFrame() then
		inputDate = frame:getParent().args[ 1 ]
		local frameArgsDate = frame.args[ 1 ]
		if frameArgsDate then
			inputDate = frameArgsDate
		end
	else
		inputDate = frame
	end
	
	inputDate = tonumber ( inputDate )
	
	if inputDate >= os.time{day=1, month=1, year=1963} then
		return os.date("%Y",inputDate)
	else
		local data = mw.loadData( 'Module:British parliamentary session/data' )
		for _, t in ipairs( data ) do
			if inputDate >= t.sDate and inputDate <= t.eDate then
				return t.sortorder
			end
		end
    end
end

function p.archive( frame )
	
	local inputDate
	if frame == mw.getCurrentFrame() then
		inputDate = frame:getParent().args[ 1 ]
		local frameArgsDate = frame.args[ 1 ]
		if frameArgsDate then
			inputDate = frameArgsDate
		end
	else
		inputDate = frame
	end
	
	inputDate = tonumber ( inputDate )
	
	if inputDate >= os.time{day=1, month=1, year=1963} then
		return ""
	else
		local data = mw.loadData( 'Module:British parliamentary session/data' )
		for _, t in ipairs( data ) do
			if inputDate >= t.sDate and inputDate <= t.eDate then
				return t.archive
			end
		end
    end
end

return p