Модуль:ГІатІилъиИкълимал/БакІ
Внешний вид
Для документации этого модуля может быть создана страница Модуль:ГІатІилъиИкълимал/БакІ/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
-- временное решение для ДВФО и СФО образца ноября 2018 года, пока не будут опубликованы данные о площади на январь 2019 года
if ((v=='РикІкІаада-Бакъбаккул федералияб икълим') or (v=='Сибиралъул федералияб икълим')) and (tonumber(tostring(self.frame:expandTemplate{ title = 'ГІатІилъиИкълимал', args = {v, ['Формат']='Сон'} }))<2019) then
local ZabKrai = tonumber(tostring(self.frame:expandTemplate{ title = 'ГІатІилъиИкълимал', args = {'Забайкал край'} }))
local BuryatR = tonumber(tostring(self.frame:expandTemplate{ title = 'ГІатІилъиИкълимал', args = {'Бурятия Республика'} }))
local TempFDArea = tonumber(tostring(self.frame:expandTemplate{ title = 'ГІатІилъиИкълимал', args = {v} }))
if v=='РикІкІада-Бакъбаккул федералияб икълим' then
ArrayDatas[#ArrayDatas+1] = TempFDArea+ZabKrai+BuryatR
ArrayTemps[v..""]=TempFDArea+ZabKrai+BuryatR
else
ArrayDatas[#ArrayDatas+1] = TempFDArea+ZabKrai+BuryatR
ArrayTemps[v..""]=TempFDArea+ZabKrai+BuryatR
end
else
ArrayDatas[#ArrayDatas+1] = tonumber(tostring(self.frame:expandTemplate{ title = 'ГІатІилъиИкълимал', args = {v} }))
ArrayTemps[v..""]=tonumber(tostring(self.frame:expandTemplate{ title = 'ГІатІилъиИкълимал', args = {v} }))
end
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