Модуль:ПлощадьРегионы/Год

Материал из Томская энциклопедии

Для документации этого модуля может быть создана страница Модуль:ПлощадьРегионы/Год/doc

require('Module:No globals')

local Base = {'Россия', 'Российская Федерация', 'Центральный федеральный округ', 'Белгородская область', 'Брянская область', 'Владимирская область', 'Воронежская область', 'Ивановская область', 'Калужская область', 'Костромская область', 'Население Курской области', 'Курская область', 'Липецкая область', 'Москва', 'город Москва', 'Московская область', 'Орловская область', 'Рязанская область', 'Смоленская область', 'Тамбовская область', 'Тверская область', 'Тульская область', 'Ярославская область', 'Северо-Западный федеральный округ', 'Архангельская область', 'Ненецкий автономный округ', 'Архангельская область без Ненецкого автономного округа', 'Вологодская область', 'Калининградская область', 'Республика Карелия', 'Карелия', 'Республика Коми', 'Ленинградская область', 'Мурманская область', 'Новгородская область', 'Псковская область', 'Санкт-Петербург', 'город Санкт-Петербург', 'Южный федеральный округ', 'Адыгея', 'Республика Адыгея', 'Астраханская область', 'Волгоградская область', 'Калмыкия', 'Республика Калмыкия', 'Краснодарский край', 'Ростовская область', 'Дагестан', 'Республика Дагестан', 'Ингушетия', 'Республика Ингушетия', 'Кабардино-Балкария', 'Кабардино-Балкарская Республика', 'Карачаево-Черкесия', 'Карачаево-Черкесская Республика', 'Северная Осетия', 'Республика Северная Осетия - Алания', 'Ставропольский край', 'Чечня', 'Чеченская Республика', 'Приволжский федеральный округ', 'Башкортостан', 'Республика Башкортостан', 'Кировская область', 'Марий Эл', 'Республика Марий Эл', 'Мордовия', 'Республика Мордовия', 'Нижегородская область', 'Оренбургская область', 'Пензенская область', 'Самарская область', 'Саратовская область', 'Татарстан', 'Республика Татарстан', 'Удмуртия', 'Удмуртская Республика', 'Ульяновская область', 'Чувашия', 'Чувашская Республика', 'Уральский федеральный округ', 'Курганская область', 'Свердловская область', 'Тюменская область', 'Ханты-Мансийский автономный округ — Югра', 'Ханты-Мансийский автономный округ - Югра', 'Ямало-Ненецкий автономный округ', 'Тюменская область без автономных округов', 'Челябинская область', 'Сибирский федеральный округ', 'Республика Алтай', 'Алтайский край', 'Бурятия', 'Республика Бурятия', 'Иркутская область', 'Кемеровская область', 'Красноярский край', 'Новосибирская область', 'Омская область', 'Томская область', 'Тыва', 'Республика Тыва', 'Хакасия', 'Республика Хакасия', 'Дальневосточный федеральный округ', 'Амурская область', 'Еврейская автономная область', 'Магаданская область', 'Приморский край', 'Якутия', 'Республика Саха (Якутия)', 'Сахалинская область', 'Хабаровский край', 'Чукотский автономный округ'}

local Base2010 = {'Северо-Кавказский федеральный округ', 'Забайкальский край'}

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

local Base2006_2007 = {'Коми-Пермяцкий автономный округ', 'Коми-Пермяцкий округ', 'Таймырский Долгано-Ненецкий район', 'Таймырский (Долгано-Ненецкий) автономный округ', 'Таймырский автономный округ', 'Эвенкийский район', 'Эвенкийский автономный округ', 'Красноярский край без автономных округов', 'Пермская область без Коми-Пермяцкого автономного округа', 'Пермская область'}

local Base2006_2008 = {'Усть-Ордынский Бурятский автономный округ', 'Иркутская область без Усть-Ордынского Бурятского автономного округа', 'Камчатская область', 'Корякский автономный округ', 'Камчатская область без Корякского автономного округа'}

local Base2006_2009 = {'Читинская область ', 'Агинский Бурятский автономный округ', 'Читинская область без Агинского Бурятского автономного округа'}

local Yearconvert = {
--существующие регионы или их группы (объявляются выше)
['Base'] = {-- сама РФ, а также подавляющее большинство субъектов
[2006]=1,
[2007]=2,
[2008]=3,
[2009]=4,
[2010]=5,
[2011]=6,
[2012]=7,
[2013]=8,
[2014]=9,
[2015]=10,
[2016]=11,
[2017]=12,
},

['Пермский край'] = {
[2007]=1,
[2008]=2,
[2009]=3,
[2010]=4,
[2011]=5,
[2012]=6,
[2013]=7,
[2014]=8,
[2015]=9,
[2016]=10,
[2017]=11,
},

['Камчатский край'] = {
[2009]=1,
[2010]=2,
[2011]=3,
[2012]=4,
[2013]=5,
[2014]=6,
[2015]=7,
[2016]=8,
[2017]=9,
},

['Base2010'] = {--СКФО и Забайкальский край
[2010]=1,
[2011]=2,
[2012]=3,
[2013]=4,
[2014]=5,
[2015]=6,
[2016]=7,
[2017]=8,
},

['Base2015'] = {--Республика Крым и Севастополь
[2015]=1,
[2016]=2,
[2017]=3,
},

-- упразднённые регионы или группы
['Base2006_2007'] = {-- Коми-Пермяцкий автономный округ, Таймырский (Долгано-Ненецкий) автономный округ, Эвенкийский автономный округ, Красноярский край без автономных округов, Пермская область, Пермская область без Коми-Пермяцкого автономного округа
[2006]=1,
[2007]=2,
},

['Base2006_2008'] = {-- Усть-Ордынский Бурятский автономный округ, Иркутская область без Усть-Ордынского Бурятского автономного округа, Корякский автономный округ, Камчатская область, Камчатская область без Корякского автономного округа
[2006]=1,
[2007]=2,
[2008]=3,
},

['Base2006_2009'] = {--Агинский Бурятский автономный округ, Читинская область и Читинская область без Агинского Бурятского автономного округа
[2006]=1,
[2007]=2,
[2008]=3,
[2009]=4,
},

['Крымский федеральный округ'] = {
[2015]=1,
[2016]=2,
},
}

local Yearconv = {}
Yearconv.__index = Yearconv

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

function Yearconv:render()
	local fallback = self.args['макс'] or self.args['3']
	if (self.args['1'] or self.args['2'])==('' or nil) then 
		return fallback 
	else
	local regpass = self.args['1']
	
    if table.contains(Base, regpass) then regpass='Base'
    elseif table.contains(Base2010, regpass) then regpass = 'Base2010'
    elseif table.contains(Base2015, regpass) then regpass='Base2015'
    elseif table.contains(Base2006_2007, regpass) then regpass='Base2006_2007'
    elseif table.contains(Base2006_2008, regpass) then regpass='Base2006_2008'
    elseif table.contains(Base2006_2009, regpass) then regpass = 'Base2006_2009' end

	local getarg
    if Yearconvert[regpass] and Yearconvert[regpass][self.args['2']] then
    getarg = Yearconvert[regpass][self.args['2']]
    else
    getarg = fallback
    end
	return getarg
	end
end

function Yearconv.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, Yearconv)
end

local p = {}

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

return p