Toggle menu
14
229
69
27.1K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Usage


local getArgs = require('Module:Arguments').getArgs

local default_error_category = "[[Category:Pages using infobox television with nonstandard dates]]"

local p = {}

function p.start_end_date_template_validation(frame)
	local args = getArgs(frame)
	local error_category = args.error_category or default_error_category

	local start_date = args.first_aired or args.released or args.airdate or args.release_date or args.airdate_overall
	if start_date then
		if not start_date:find("dtstart") then
			return error_category
		end
	end

	local end_date = args.last_aired
	if end_date then
		if not end_date:find("dtend") and end_date ~= "present" then
			return error_category
		end
	end
end

function p.dates(frame)
	local returnval
	local args = getArgs(frame)
	
	if table.getn(args) < 2 then
		if args['1'] == nil and args['2'] == nil then
			return ''
		elseif args['1'] == nil then 
			return args['2']
		elseif args['2'] == nil then 
			return args['1']
		end
	end
	
	args['1'] = args['1']:gsub("&nbsp;"," ")
	args['2'] = args['2']:gsub("&nbsp;"," ")
	
	local dmy = false
	local pr1, m1, d1, y1, su1 = string.match(args['1'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)')
	local pr2, m2, d2, y2, su2 = string.match(args['2'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)')
	if y1 == nil then
		dmy = true
		pr1, d1, m1, y1, su1 = string.match(args['1'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)')
		pr2, d2, m2, y2, su2 = string.match(args['2'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)')
	end
	
	local dash = '&nbsp;–<br />'
	if y1 ~= nil and y2 ~= nil then
		su1 = su1 or ''
		su2 = su2 or ''
		
		local MONTHS = {January=1, February=2, March=3, April=4, May=5, June=6, July=7, August=8, September=9, October=10, November=11, December=12}
		local diff = os.time({year=y2, month=MONTHS[m2], day=d2, hour=0, min=0, sec=0}) - os.time({year=y1, month=MONTHS[m1], day=d1, hour=0, min=0, sec=0})
		
		if diff < 0 then
			returnval = 'Invalid date range'
		else
			if y1 == y2 then
				if dmy == false then
					returnval = pr1 .. m1 .. ' ' .. d1 .. su1 .. dash .. pr2 .. m2 ..' '.. d2 ..', '.. y2 .. su2
				else
					returnval = pr1 .. d1 .. ' ' .. m1 .. su1 .. dash .. pr2 .. d2 .. ' ' .. m2 .. ' ' .. y2 .. su2
				end
			else
				if dmy == false then
					returnval = pr1 .. m1 .. ' ' .. d1 ..', '.. y1 .. su1 .. dash .. pr2 .. m2 .. ' '.. d2 .. ', ' .. y2 .. su2
				else
					returnval = pr1 .. d1 .. ' ' .. m1 ..' '.. y1 .. su1 .. dash .. pr2 .. d2 .. ' '.. m2 .. ' ' .. y2 .. su2
				end
			end
		end
	else
		returnval = args['1']..dash..args['2'];
	end
	
	return returnval;
end

return p
Contents