Модул:Infobox/bulleted block

Мавод аз Википедиа — донишномаи озод
Ҳуҷҷатгузорӣ
local p = {}

-- takes strings or nils; returns a string
function makeText(frame, text, wikidata, from)
	if wikidata and wikidata ~= ''then
		return frame:expandTemplate{title='Wikidata', args={wikidata, text or '', from=from or ''}}
	else
		return text or ''
	end
end

-- from [[tg:Модул:Infobox]]
local function maxNumber ( args )
	local maxNumber = 0
	for argName, _ in pairs(args) do
		local argNumber = mw.ustring.match(argName, '^[^0-9]+([0-9]+)$')
		if argNumber and tonumber(argNumber) > maxNumber then
			maxNumber = tonumber(argNumber)
		end
	end
	return maxNumber
end

function p.main(frame)
	local args = frame:getParent().args
	local maxNumberArgs = maxNumber(args)
	
	local texts = {}
	for i = 1, maxNumberArgs do
		if args['матн' .. i] then
			texts[i] = makeText(frame, args['матн' .. i], args['викидода' .. i], args['from'])
		end
	end
	
	local textsAreEmpty = true
	for i = 1, maxNumberArgs do
		if texts[i] and texts[i] ~= '' then
			textsAreEmpty = false
		end
	end
	
	local results = {}
	if not textsAreEmpty and args['зерсарлавҳа'] and args['зерсарлавҳа'] ~= '' then
		results['матн1'] = args['зерсарлавҳа']
		results['сабки_матн1'] = 'padding-bottom:0; border-bottom:0; text-align:left; font-weight:bold;'
	end
	
	local mainText = makeText(frame, args['матн'], args['викидода'], args['from'])
	if mainText == '' and args['нишонагузорӣ'] and args['нишонагузорӣ'] ~= '' and not textsAreEmpty then
		mainText = ' '
	end
	
	if mainText and mainText ~= '' then
		results['нишонагузорӣ2'] = args['нишонагузорӣ']
		results['сабки_нишонагузорӣ2'] = 'padding-bottom:0; border-bottom:0;'
		results['матн2'] = mainText
		results['сабки_матн2'] = 'padding-bottom:0; border-bottom:0;'
	end
	
	for i = 1, maxNumberArgs do
		if texts[i] and texts[i] ~= '' then
			results['нишонагузорӣ' .. (i+2)] = ' • ' .. (args['нишонагузорӣ' .. i] or '')
			results['матн' .. (i+2)] = texts[i]
			
			local last = true
			for j = i+1, maxNumberArgs do
				if texts[j] and texts[j] ~= '' then
					last = false
				end
			end
			
			if last then
				results['сабки_нишонагузорӣ' .. (i+2)] = 'font-weight:normal; padding-top:0; border-top:0;'
				results['сабки_матн' .. (i+2)] = 'padding-top:0; border-top:0;'
			else
				results['сабки_нишонагузорӣ' .. (i+2)] = 'font-weight:normal; padding-bottom:0; border-bottom:0; padding-top:0; border-top:0;'
				results['сабки_матн' .. (i+2)] = 'padding-bottom:0; border-bottom:0; padding-top:0; border-top:0;'
			end
		end
	end

	return frame:expandTemplate{title='Қуттӣ/блок', args=results}
end

return p