پرش به محتوا

پودمان:TOCyears

از ویکی‌پدیا، دانشنامهٔ آزاد
توضیحات پودمان[ایجاد] [پاکسازی]
-- This module implements [[Template:TOCyears]]

local yesno = require('Module:Yesno')
local numConv = require('Module:Numeral converter').convert
local leftRight = require('Module:Leftright').leftRight
local p = {}

function p._years(args)
	
	-- Local arguments
	if args['سال آغاز'] then args.startyear = args['سال آغاز'] end
	if args['گام'] then args.step = args['گام'] end
	if args['بازه'] then args.range = args['بازه'] end
	if args['سال پایان'] then args.endyear = args['سال پایان'] end
	if args['اصلی'] then args.primary = args['اصلی'] end
	if args['تراز'] then args.align = args['تراز'] end
	if args['پاک‌کن'] then args.clear = args['پاک‌کن'] end
	if args['عنوان'] then args.title = args['عنوان'] end
	
	local i = tonumber(numConv('en', args.startyear)) or 1900
	local endYear = tonumber(numConv('en', args.endyear)) or tonumber(os.date('%Y'))
	local range = tonumber(numConv('en', args.range))
	local step = tonumber(numConv('en', args.step)) or 1
	local links = {}
	while i <= endYear do
		local year = tostring(i)
		if range then
			year = year .. '-' .. tostring(i + range)
		end
		links[#links + 1] = mw.ustring.format('[[#%s|%s]]', numConv('fa', year), numConv('fa', year))
		i = i + step
	end
	if #links == 0 then
		return ""
	end
	links = '* ' .. table.concat(links, ' • ')
	
	-- Root
	local root = mw.html.create()
	local isPrimary = yesno(args.primary) ~= false
	if isPrimary then
		root:wikitext('__NOTOC__')
	end

	-- Top div tag
	local top = root:tag('div')
	top:addClass('toc plainlinks')
	if isPrimary then
		top
			:attr('id', 'toc')
			:attr('class', 'toc')
	end
	local align = args.align and leftRight(args.align)
	args.clear = leftRight(args.clear)
	if align == 'left' then
		top
			:css('float', 'left')
			:css('clear', args.clear or 'left')
	elseif align == 'right' then
		top
			:css('float', 'right')
			:css('clear', args.clear or 'right')
	elseif align == 'center' then
		top
			:css('margin', 'auto')
			:css('clear', args.clear or 'none')
	else
		top
			:css('clear', args.clear or 'right')
	end
	top:newline()

	-- Title div tag
	local title = args.title or mw.message.new('Toc'):plain()
	local titleDiv = top:tag('div')
	titleDiv:attr('class', 'toctitle')
	if isPrimary then
		titleDiv:wikitext('<h2>' .. title .. '</h2>')
	else
		titleDiv:tag('strong'):wikitext(title)
	end
	
	-- Content
	top
		:newline()
		:wikitext(links)
		:newline()
	
	return tostring(root)
end

function p.years(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = {
			'الگو:TOCyears',
			'الگو:فهرست محتویات سال'
		}
	})
	return p._years(args)
end

return p