پرش به محتوا

پودمان:فهرست کارها

از ویکی‌پدیا، دانشنامهٔ آزاد
توضیحات پودمان[ایجاد] [پاکسازی]
require('strict')

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

function p._main (args)
	
	if args['پس‌زمینه'] then args.bg = args['پس‌زمینه'] end
	if args['جعبه'] then args.box = args['جعبه'] end
	if args['سبک'] then args.style = args['سبک'] end
	if args['عرض'] then args.width = args['عرض'] end
	
	local sep = (args[1] and args[1] ~= '') and args[1] or '*'
	sep = mw.ustring.gsub(sep, '(\n)', '')										-- trim newlines
	local isList = (sep == '*' or sep == '#')
	
	local out = '' .. (isList and '\n' .. sep or '')
	
	local numArgs = {}
	
	for k, v in ipairs(args) do
		if tonumber(k) ~= 1 then
			table.insert(numArgs, args[k])
		end
	end
	
	local i = 1
	
	repeat
		if tonumber(i) < #numArgs then
			out = out .. numArgs[i] .. (isList and '\n' or '') .. sep
		else
			out = out .. numArgs[i]
		end
		i = i + 1
	until i > #numArgs
	
	if yesno(args.box, true) then
		out = mw.html.create('div')
			:css('width', args.width or '20em')
			:css('background', args.bg or '#f8f9fa')
			:css('border', '1px solid black')
			:css('padding', '10px')
			:cssText(args.style or '')
			:wikitext(tostring(out))
	end
	
	return out
end

function p.main (frame)
	local args = getArgs(frame, {
		valueFunc = function (key, value)
			if key == 1 then
				return value
			elseif value then
				value = mw.text.trim(value)
				if value ~= '' then
					return value
				end
			end
			return nil
		end
	})
	return p._main(args)
end

return p