-- 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