وحدة:Yearly archive
المظهر
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png)
local getArgs = require('Module:Arguments').getArgs
local nonexist = mw.loadData( 'Module:Yearly archive/data' )
local months = { 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر' }
local function procyear(base,year,nonmonths)
local ret = '*<span style="color:#222222;">\'\'\'' .. tostring(year) .. ":'''</span> "
local m_t = {}
for i,m in ipairs(months) do
local exs=false
local mypage = base .. "/" .. tostring(year) .. "/" .. m
if nonmonths ~= nil then
exs = (nonmonths[i] == nil)
else
exs = mw.title.new(mypage).exists
end
if exs then
m_t[#m_t+1] = '[[' .. mypage .. '|' .. m .. ']]'
else
m_t[#m_t+1] = m
end
end
return ret .. table.concat(m_t, " <b>·</b> ") .. '\n'
end
local function count(t)
local c = 0
for _ in pairs(t) do c = c + 1 end
return c
end
local function main(frame)
local args = getArgs(frame)
local syear = tonumber(args["1"])
local cyear = os.date("*t").year
local strallmonths = "*<span style=\"color:#222222;\">'''year:'''</span> [[base/year/يناير|يناير]] <b>·</b> [[base/year/فبراير|فبراير]] <b>·</b> [[base/year/مارس|مارس]] <b>·</b> [[base/year/أبريل|أبريل]] <b>·</b> [[base/year/مايو|مايو]] <b>·</b> [[base/year/يونيو|يونيو]] <b>·</b> [[base/year/يوليو|يوليو]] <b>·</b> [[base/year/أغسطس|أغسطس]] <b>·</b> [[base/year/سبتمبر|سبتمبر]] <b>·</b> [[base/year/أكتوبر|أكتوبر]] <b>·</b> [[base/year/نوفمبر|نوفمبر]] <b>·</b> [[base/year/ديسمبر|ديسمبر]]\n"
local base = args["2"] or mw.title.getCurrentTitle().prefixedText
if not(syear and syear > 2002 and syear < cyear) then
syear=2016
end
local ret = ""
if nonexist[base] then
local nonyear=1
local basenon = nonexist[base]
local cbasenon = count(basenon)
for year=syear,cyear,1 do
if year>= basenon[1][1] and year <= basenon[cbasenon][1] then
while basenon[nonyear][1] < year do
nonyear = nonyear + 1
end
if basenon[nonyear][1] == year then
ret = ret .. procyear(base,year,basenon[nonyear][2])
else
ret = ret .. mw.ustring.gsub(mw.ustring.gsub(strallmonths, "year", year), "base", base)
end
else
ret = ret .. procyear(base,year)
end
end
else
for year=syear,cyear,1 do
ret = ret .. procyear(base,year)
end
end
return '<div class = "yearly-archive" style="color:gray;">\n' .. ret .. '</div>';
end
return {main=main}