Модуль:ПлощадьРегионы/Украина/Место

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

local ArrayRegUA = {'Автономная Республика Крым', 'Винницкая область', 'Волынская область', 'Днепропетровская область', 'Донецкая область', 'Житомирская область', 'Закарпатская область', 'Запорожская область', 'Ивано-Франковская область', 'Киев', 'Киевская область', 'Кировоградская область', 'Луганская область', 'Львовская область', 'Николаевская область', 'Одесская область', 'Полтавская область', 'Ровненская область', 'Севастополь', 'Сумская область', 'Тернопольская область', 'Харьковская область', 'Херсонская область', 'Хмельницкая область', 'Черкасская область', 'Черниговская область', 'Черновицкая область'}

local AliasesForIDXCloningU = {
['город Киев']='Киев',
['АР Крым']='Автономная Республика Крым',
['АРК']='Автономная Республика Крым',
['Крым']='Автономная Республика Крым',
['город Севастополь'] = 'Севастополь',
['Севастопольский горсовет'] = 'Севастополь',
}

local ListAliasesU = {'город Киев', 'АР Крым', 'АРК', 'Крым', 'город Севастополь', 'Севастопольский горсовет'}

local ArrayDatasU = {}

local ArrayIndexesU = {}

local ArrayTempsU = {}

local AreaPlaceU = {}
AreaPlaceU.__index = AreaPlaceU

function AreaPlaceU:gkeyfromVal( t, value )
  for k,v in pairs(t) do
    if v==value then return k end
  end
  return ''
end

function table.contains(table, element)
  for _, value in pairs(table) do
    if value == element then
      return true
    end
  end
  return false
end

function AreaPlaceU:render()
	for p,v in ipairs(ArrayRegUA) do
		ArrayDatasU[#ArrayDatasU+1] = tonumber(tostring(self.frame:expandTemplate{ title = 'ПлощадьРегионы/Украина', args = {v} }))
		ArrayTempsU[v..""]=tonumber(tostring(self.frame:expandTemplate{ title = 'ПлощадьРегионы/Украина', args = {v} }))
	end		
	table.sort(ArrayDatasU, function(a,b) return a>b end)
	for _,o in ipairs(ArrayRegUA) do 
		ArrayIndexesU[o..""] = self:gkeyfromVal(ArrayDatasU, ArrayTempsU[o..""])
	end
	for _,a in ipairs(ListAliasesU) do
		if ArrayIndexesU[tostring(AliasesForIDXCloningU[a..""])] ~= ('' or nil) then
		ArrayIndexesU[a..""] = ArrayIndexesU[tostring(AliasesForIDXCloningU[a..""])]
		end
	end
	--end
	ArrayDatasU, ArrayTempsU, ArrayRegUA, AliasesForIDXCloningU, ListAliasesU = nil
	return ArrayIndexesU[self.args['1']] or ''
end

function AreaPlaceU.new(frame, args)
	if not args then
		args = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:ПлощадьРегионы/Украина/Место', 'Template:ПлощадьРегионы/Украина'}})
		--return
	end
	local obj = {
		frame = frame,
		args = args
	}
    
	return setmetatable(obj, AreaPlaceU)
end

local p = {}

function p.main(frame)
	return AreaPlaceU.new(frame):render()
	
end

return p