跳转到内容

模組:Release timeline

维基百科,自由的百科全书

这是本页的一个历史版本,由風中的刀劍留言 | 贡献2015年7月16日 (四) 17:26编辑。这可能和当前版本存在着巨大的差异。

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

local function isYearReleased(args, year)
	
	if args[year] then
		return true
	else
		for i = 96, 105 do
			if args[year .. string.char(i)] then
				return true
			end
		end
	end
	
end

local function color(args, year)
	if isYearReleased(args, year) then
		return '#0BDA51'
	else
		return '#228B22'
	end
end

local function titleItem(content)
	local ret
	
	if content ~= nil then
		ret = mw.html.create( 'span' )
		ret
			:css( 'text-indent', '-1em')
			:wikitext( '-' .. content .. '<br />' )
	end
	
	return ret
end

local function left(args, year, displeft)
	local ret
	ret = mw.html.create( 'td' )
	
	ret
		:wikitext( (displeft or year)  .. '-' )
		
	return ret
end

local function center(args, year)
	local ret
	ret = mw.html.create( 'td' )
	
	ret
		:wikitext( '&nbsp;' )
		:css( 'width', '10px' )
		:css( 'border', '1px solid black' )
		:css( 'background-color', color(args, year) )
		
	return ret
end

local function right(args, year)
	if isYearReleased(args, year) == nil then return nil end
	
	local ret
	ret = mw.html.create( 'td' )

	ret
		:css( 'padding', '0 0 0 -1em')
		:node( titleItem(args[year]) or titleItem(args[year .. 'a' ]) )

	for i = 98, 106 do
		ret:node( titleItem(args[year .. string.char(i)]) )
	end

	return ret
end

local function row(args, year, displeft)
	local ret
	ret = mw.html.create('tr')
	
	ret
		:node( left(args, year) )
		:node( center(args, year) )
		:node( right(args, year) )
		
	return ret
end

--------------------------------------------------------------------------------

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	-- Main module code goes here.
	local ret
	local firstyear, lastyear
	ret = mw.html.create( 'table' )
	
	ret
		:css('float', args.align or 'right')
		:css('clear', args.align or 'right')
		:css('margin', '0 0 0.5ex 1em')
		:css('font-size', '85.7%')
		:css('line-height', '90%')
		:css('max-width', '264px')
		:attr('cellspacing', '0')
		:attr('cellpadding', '4')
		:attr('summary', args.summary or '')
	
	do
		local caption
		caption = mw.html.create('caption')
		caption
			:css('font-weight', 'bold')
			:css('font-size', '111.7%')
			:wikitext(args.title or '发行时间轴')
			
	
		ret:node(caption)
	end

	if tonumber(args.first) then
		firstyear = tonumber(args.first)
	else
		for i = 1980, os.date('%Y') do
			if isYearReleased(args, i) then
				firstyear = i
				break
			end
		end
	end
	
	if tonumber(args.last) then
		lastyear = tonumber(args.last)
	else
		for i = os.date('%Y') + 3, firstyear, -1 do
			if isYearReleased(args, i) then
				lastyear = i
				break
			end
		end
	end

	for year = firstyear, lastyear do
		ret:node( row(args, year) )
	end
	
	return ret
end

return p