Модуль:PopulationDistribution

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация

Этот модуль вызывается из шаблона Распределение населения.

local p = {}

function p.GetPopulationDistribution(frame)
	local Args =  frame:getParent().args
	if Args[1] == nil then
		return '<strong class="error">Введите викифицированные названия населённых пунктов</strong>'
	end
	
	local District = Args['МО'] or frame.args[1]
    local DistrictPopulation = frame:expandTemplate{ title = "Население", args={District, "ч"}}
    local ChartArgs = {}
    
    local Title = 'Распределение населения '
	if string.find (District, 'район') then
		Title = Title .. 'района'
	elseif string.find (District, '[Гг]ородской округ') then
		Title = Title .. 'городского округа'
	elseif string.find (District, '[Мм]униципальный округ') then
		Title = Title .. 'муниципального округа'
	elseif string.find (District, ' округ') then
		Title = Title .. 'округа'
	elseif string.find (District, '[Гг]ородское поселение') then
		Title = Title .. 'городского поселения'
	else
		Title = Title .. 'муниципального образования'
	end
	ChartArgs['заголовок'] = Title .. ':'
	ChartArgs['other'] = 'Остальные'
	
	for key, val in pairs(Args) do
		if key ~= 'МО' then 
			local Name = mw.text.trim(val)
			ChartArgs[ 'описание' .. key ] = string.format('[[%s|%s]]', Name, string.match(Name, "([^(]+)"))
			ChartArgs[ 'значение' .. key ] = string.format("%.2f", frame:expandTemplate{ title = "Население", args={Name, "ч"}}*100/DistrictPopulation)
		end
	end
	
	return frame:expandTemplate({
		title = 'Круговая диаграмма',
		args = ChartArgs,
	})
end
return p