Модуль:Сайт

Материал из Кадровый состав НКВД 1935-1939
Перейти к: навигация, поиск

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

local pp = {}

local tabType = {
	site = { what = '[%s сайт ', where = 'на [%s сайте ', from = 'по [%s сайту ', },
	forum = { what = '[%s форум ', where = 'на [%s форуме ', from = 'на [%s форуме ', },
	stalin = { what = '«[%s Сталинские списки]»', where = 'в «[%s Сталинских списках]»', from = 'по сайту «[%s Сталинские списки]»', }, -- просто для примера
	ref = { what = '[%s Справочник ', where = 'в [%s Справочнике ', from = 'по [%s Справочнику ', },
	obd = { what = '[%s ', where = 'в [%s ', from = 'по [%s ', },
	unknow = { what = 'сайт[[Категория:Незарегистрированный сайт]] %s', 
				where = 'на[[Категория:Незарегистрированный сайт]] сайте %s', 
				from = 'по[[Категория:Незарегистрированный сайт]] сайту %s', },
}
local tabSite = {
	['myisk.net']                 = { type = 'site',   name = '«Таловская трагедия»]', },
	['www.alexanderyakovlev.org'] = { type = 'site',   name = 'Фонда А. Н. Яковлева]', },
	['www.nkvdgugb.ru']           = { type = 'site',   name = 'А. М. Григоряна]', },
	['www.knowbysight.info']      = { type = 'ref',    name = 'по истории Коммунистической партии и Советского Союза]', },
	['forum.mozohin.ru']          = { type = 'forum',  name = 'О. Мозохина]', },
	['shieldandsword.mozohin.ru'] = { type = 'site',   name = 'В. Мзареулова]', },
	['www.centrasia.ru']          = { type = 'site',   name = 'ЦентрАзия]', },
	['www.pogranec.ru']           = { type = 'forum',  name = 'Погранец]', },
	['pogranec.ru']               = { type = 'forum',  name = 'Погранец]', },
	['stalin.memo.ru']            = { type = 'stalin', name = '', },
	['base.memo.ru']              = { type = 'site',   name = '«Жертвы политического террора в СССР»]', },
	['pamyat-naroda.ru']          = { type = 'obd',    name = ' ОБД МО]', },
	['podvignaroda.ru']           = { type = 'obd',    name = ' ОБД МО]', },
	['obd-memorial.ru']           = { type = 'obd',    name = ' ОБД МО]', },
	['eao.memo27reg.org']         = { type = 'site',   name = ' Биробиджанского «Мемориала»]', },
	unknow                        = { type = 'unknow', name = '', },
	['memo.ru']                   = 'memo',
	['www.memo.ru']               = 'memo',
	memo                          = { { re = '^/history/nkvd/kto2/', type = 'ref', name = 'Н. Петрова «Кто руководил органами ГБ (1941−54)]»', },
		                              { re = '^/history/NKVD/kto2/', type = 'ref', name = 'Н. Петрова «Кто руководил органами ГБ (1941−54)]»', },
		                              { re = '^/history/nkvd/kto/', type = 'ref', name = 'Н. Петрова и К. Скоркина «Кто руководил НКВД (1934−41)]»', },
		                              { re = '^/history/NKVD/kto/', type = 'ref', name = 'Н. Петрова и К. Скоркина «Кто руководил НКВД (1934−41)]»', },
		                            },
}


pp.link = function( whatwhere, url )
	local uri = mw.uri.new( url )
	if not uri then
		return '<span class=error>(не смогли разобрать «' .. url .. '»)</span>'
	end
	local site = tabSite[uri.host]
	if type( site ) == 'string' then
		local arr, relpath = tabSite[site], uri.path
		site = nil
		for _, v in ipairs( arr ) do
			if string.match( relpath, v.re ) then
				site = v
				break
			end
		end
	end

	if not site then
		site = tabSite.unknow
	end
	if type( site ) == 'table' then
		return mw.ustring.format( tabType[site.type][whatwhere] .. site.name, url )
	end
		
	
end	


pp[''] = function ( frame )
	local para = frame.args
	local whatwhere = mw.text.trim( para[1] or '' )
	if whatwhere == '' then
		whatwhere = 'what'
	end

	local args = frame:getParent().args
	local url = mw.text.trim( args[1] or '' )
	return pp.link( whatwhere, url )
--[[	
	local uri = mw.uri.new( url )
	if not uri then
		return '<span class=error>(не смогли разобрать «' .. url .. '»)</span>'
	end
	local site = tabSite[uri.host]
	if not site then
		site = tabSite.unknow
	end
	return mw.ustring.format( tabType[site.type][whatwhere] .. site.name, url )
--]]
end

return pp