Модуль:ПлощадьРегионы/Место
Перейти к навигации
Перейти к поиску
Для документации этого модуля может быть создана страница Модуль:ПлощадьРегионы/Место/doc
require('Module:No globals')
local ArrayRU = {'Алтайский край', 'Амурская область', 'Архангельская область', 'Астраханская область', 'Белгородская область', 'Брянская область', 'Владимирская область', 'Волгоградская область', 'Вологодская область', 'Воронежская область', 'Москва', 'Санкт-Петербург', 'Еврейская автономная область', 'Забайкальский край', 'Ивановская область', 'Иркутская область', 'Кабардино-Балкарская Республика', 'Калининградская область', 'Калужская область', 'Камчатский край', 'Карачаево-Черкесская Республика', 'Республика Карелия', 'Кемеровская область', 'Кировская область', 'Костромская область', 'Краснодарский край', 'Красноярский край', 'Курганская область', 'Курская область', 'Ленинградская область', 'Липецкая область', 'Магаданская область', 'Московская область', 'Мурманская область', 'Ненецкий автономный округ', 'Нижегородская область', 'Новгородская область', 'Новосибирская область', 'Омская область', 'Оренбургская область', 'Орловская область', 'Пензенская область', 'Пермский край', 'Приморский край', 'Псковская область', 'Республика Адыгея', 'Республика Алтай', 'Республика Башкортостан', 'Республика Бурятия', 'Республика Дагестан', 'Республика Ингушетия', 'Республика Калмыкия', 'Республика Коми', 'Республика Крым', 'Республика Марий Эл', 'Республика Мордовия', 'Республика Саха (Якутия)', 'Республика Северная Осетия - Алания', 'Республика Татарстан', 'Республика Тыва', 'Республика Хакасия', 'Ростовская область', 'Рязанская область', 'Самарская область', 'Саратовская область', 'Сахалинская область', 'Свердловская область', 'Севастополь', 'Смоленская область', 'Ставропольский край', 'Тамбовская область', 'Тверская область', 'Томская область', 'Тульская область', 'Тюменская область', 'Удмуртская Республика', 'Ульяновская область', 'Хабаровский край', 'Ханты-Мансийский автономный округ - Югра', 'Челябинская область', 'Чеченская Республика', 'Чувашская Республика', 'Чукотский автономный округ', 'Ямало-Ненецкий автономный округ', 'Ярославская область'}
local NOAOCheck = {'Архангельская область без Ненецкого автономного округа', 'Тюменская область без автономных округов'}
local ForceAOCheck = {'Архангельская область', 'Тюменская область'}
local ArrayFD = {'Центральный федеральный округ', 'Северо-Западный федеральный округ', 'Южный федеральный округ', 'Северо-Кавказский федеральный округ', 'Приволжский федеральный округ', 'Уральский федеральный округ', 'Сибирский федеральный округ', 'Дальневосточный федеральный округ'}
local AliasesForIDXCloning = {
['город Москва']='Москва',
['Карелия']='Республика Карелия',
['город Санкт-Петербург']='Санкт-Петербург',
['Адыгея']='Республика Адыгея',
['Калмыкия']='Республика Калмыкия',
['город Севастополь']='Севастополь',
['Дагестан']='Республика Дагестан',
['Ингушетия']='Республика Ингушетия',
['Кабардино-Балкария']='Кабардино-Балкарская Республика',
['Карачаево-Черкесия']='Карачаево-Черкесская Республика',
['Северная Осетия']='Республика Северная Осетия - Алания',
['Чечня']='Чеченская Республика',
['Башкортостан']='Республика Башкортостан',
['Марий Эл']='Республика Марий Эл',
['Мордовия']='Республика Мордовия',
['Татарстан']='Республика Татарстан',
['Удмуртия']='Удмуртская Республика',
['Чувашия']='Чувашская Республика',
['Ханты-Мансийский автономный округ — Югра']='Ханты-Мансийский автономный округ - Югра',
['Бурятия']='Республика Бурятия',
['Тыва']='Республика Тыва',
['Хакасия']='Республика Хакасия',
['Якутия']='Республика Саха (Якутия)',
}
local ListAliases = {'город Москва', 'Карелия', 'город Санкт-Петербург', 'Адыгея', 'Калмыкия', 'город Севастополь', 'Дагестан', 'Ингушетия', 'Кабардино-Балкария', 'Карачаево-Черкесия', 'Северная Осетия', 'Чечня', 'Башкортостан', 'Марий Эл', 'Мордовия', 'Татарстан', 'Удмуртия', 'Чувашия', 'Ханты-Мансийский автономный округ — Югра', 'Бурятия', 'Тыва', 'Хакасия', 'Якутия'}
local ArrayDatas = {}
local ArrayIndexes = {}
local ArrayTemps = {}
local AreaPlace = {}
AreaPlace.__index = AreaPlace
function AreaPlace: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 AreaPlace:NAOCheck(arg, NAOARG)
if table.contains(NOAOCheck, arg) then
return true
end
if NAOARG=='NOAO' then
if table.contains(ForceAOCheck, arg) then
return false
else
return true
end
end
return false
end
function AreaPlace:render()
local ArrayToCheck
if self.args['ФО'] then
ArrayRU = require('Module:ПлощадьРегионы/Место/'..self.args['ФО'])
end
if table.contains(ArrayFD, self.args['1']) then
ArrayToCheck = ArrayFD
else
ArrayToCheck = ArrayRU
end
ArrayFD, ArrayRU = nil
if self:NAOCheck(self.args['1'], self.args['2']) then
local GETArOblForReplace = self:gkeyfromVal(ArrayToCheck, 'Архангельская область')
local GETTOblForReplace = self:gkeyfromVal(ArrayToCheck, 'Тюменская область')
ArrayToCheck[GETArOblForReplace] = tostring(ArrayToCheck[GETArOblForReplace]..' без Ненецкого автономного округа')
ArrayToCheck[GETTOblForReplace] = tostring(ArrayToCheck[GETTOblForReplace]..' без автономных округов')
end
for p,v in ipairs(ArrayToCheck) do
ArrayDatas[#ArrayDatas+1] = tonumber(tostring(self.frame:expandTemplate{ title = 'ПлощадьРегионы', args = {v} }))
ArrayTemps[v..""]=tonumber(tostring(self.frame:expandTemplate{ title = 'ПлощадьРегионы', args = {v} }))
end
table.sort(ArrayDatas, function(a,b) return a>b end)
for _,o in ipairs(ArrayToCheck) do
ArrayIndexes[o..""] = self:gkeyfromVal(ArrayDatas, ArrayTemps[o..""])
end
for _,a in ipairs(ListAliases) do
if ArrayIndexes[tostring(AliasesForIDXCloning[a..""])] ~= ('' or nil) then
ArrayIndexes[a..""] = ArrayIndexes[tostring(AliasesForIDXCloning[a..""])]
end
end
--end
ArrayDatas, ArrayTemps, ArrayToCheck, AliasesForIDXCloning, ListAliases, NOAOCheck = nil
return ArrayIndexes[self.args['1']] or ''
end
function AreaPlace.new(frame, args)
if not args then
args = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:ПлощадьРегионы/Место', 'Template:ПлощадьРегионы', 'Template:ПлощадьРегионы/Украина'}})
--return
end
local obj = {
frame = frame,
args = args
}
return setmetatable(obj, AreaPlace)
end
local p = {}
function p.main(frame)
return AreaPlace.new(frame):render()
end
return p