Модуль:Песочница/Seryo93/Культурное наследие Крым

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация
require('Module:No globals')
local ICH = {}
ICH.__index = ICH


function ICH:getrureg()
	local src = self.args['1'] or ''
	if (src and (mw.ustring.sub(src,1,1) == '{')) and (mw.ustring.sub(src,-1) == '}') then
	src = mw.ustring.sub(src,2,-2)
	src = string.gsub(src, "%s+", "")
	src = mw.text.split(src,',')
	if table.count(src)>2 then
	src={src[1],src[2]}
	end
	end
	if type(src)=='table' then return src[1] else return src~='' and src or nil end
end

function ICH:getruvoy()
	local src = self.args['1'] or ''
	if (src and (mw.ustring.sub(src,1,1) == '{')) and (mw.ustring.sub(src,-1) == '}') then
	src = mw.ustring.sub(src,2,-2)
	src = string.gsub(src, "%s+", "")
	src = mw.text.split(src,',')
	if table.count(src)>2 then
	src={src[1],src[2]}
	end
	end
	if type(src)=='table' then return src[2] else return nil end
end


function ICH:getrustat()
	local src = self.args['статус'] or self.args['Статус'] or ''
	if (src and (mw.ustring.sub(src,1,1) == '{')) and (mw.ustring.sub(src,-1) == '}') then
	src = mw.ustring.sub(src,2,-2)
	src = string.gsub(src, "%s+", "")
	src = mw.text.split(src,',')
	if table.count(src)>2 then
	src={src[1],src[2]}
	end
	end
	if type(src)=='table' then return src[1] else return nil end
end

function ICH:getuastat()
	local src = self.args['статус'] or self.args['Статус'] or ''
	if (src and (mw.ustring.sub(src,1,1) == '{')) and (mw.ustring.sub(src,-1) == '}') then
	src = mw.ustring.sub(src,2,-2)
	src = string.gsub(src, "%s+", "")
	src = mw.text.split(src,',')
	if table.count(src)>2 then
	src={src[1],src[2]}
	end
	end
	if type(src)=='table' then return src[2] else return nil end
end

function ICH:render()
	local rureg = self:getrureg() or self.args['рег_N'] or ''
	local ruvoy = self.frame:preprocess('{{wikidata|p1483|'..(self:getruvoy() or self.args['Код-памятника'] or '')..'|plain=true}}') or ''
	local rustat = self:getrustat() or ''
	local region = self.args['регион'] or self.args['Регион'] or ''
	local nocat=self.args['nocat'] or ''
	local doc = self.args['док'] or ''
	local mini = self.args['мини'] or ''
	local uareg = self.args['2'] or self.args['номер'] or ''
	local uastat = self:getuastat() or ''
	local ruarms = self.frame:preprocess('{{#invoke:Культурное наследие народов РФ|mainArms|рег_N='..rureg..'|Код-памятника='..ruvoy..'|Статус='..rustat..'|Регион='..region..'}}') or ''
	local uaarms = self.frame:preprocess('{{#invoke:Памятник культурного наследия Украины|mainArms|номер='..uareg..'|Статус='..uastat..'|Регион='..region..'}}') or ''
	local rutext = self.frame:preprocess('{{#invoke:Культурное наследие народов РФ|mainCoregen|рег_N='..rureg..'|Код-памятника='..ruvoy..'|Статус='..rustat..'|Регион='..region..'|док='..doc..'|nocat='..nocat..'|мини='..mini..'}}') or ''
	local uatext = self.frame:preprocess('{{#invoke:Памятник культурного наследия Украины|mainText|номер='..uareg..'|Статус='..uastat..'|Регион='..region..'|nocat='..nocat..'|мини='..mini..'}}') or ''
	if mini~='' then
	if ruarms==uaarms then
		return self.frame:expandTemplate{title='Культурное наследие народов РФ',args={['рег_N']=rureg,['Код-памятника']=ruvoy,['Статус']=rustat,['Регион']=region,['док']=doc,['nocat']=nocat,['мини']=mini,}}..self.frame:expandTemplate{title='Памятник культурного наследия Украины',args={['номер']=uareg,['Статус']=uastat,['Регион']=region,['док']=doc,['nocat']=nocat,['мини']=mini,['Без герба']=1,}}
	else
		return self.frame:expandTemplate{title='Культурное наследие народов РФ',args={['рег_N']=rureg,['Код-памятника']=ruvoy,['Статус']=rustat,['Регион']=region,['док']=doc,['nocat']=nocat,['мини']='div',}}..self.frame:expandTemplate{title='Памятник культурного наследия Украины',args={['номер']=uareg,['Статус']=uastat,['Регион']=region,['док']=doc,['nocat']=nocat,['мини']='div',}}		
	end
	else
	local embwidth, embclass, embwidthcss, embbordercss, cellspa
	if not self.args['встраивать'] then
		embclass = 'infobox'
		embwidthcss = '280px'
		embwidth = nil
		embbordercss = nil
	else
		embclass = nil
		embwidthcss = nil		
		embwidth = '100%'
		embbordercss = '1px solid #a2a9b1'
		if self.args['встраивать']=='UNESCO' then
		cellspa = '5'
		end
	end	
	local builder
	builder=mw.html.create('table')
    	:attr('width', embwidth)
    	:attr('cellspacing', cellspa)
    	:addClass(embclass)
    	:css('width', embwidthcss)
    	:css('border', embbordercss)
    :tag('tr')
    :tag('td')
    :attr('colspan',(tostring(ruarms)==tostring(uaarms)) and 2 or nil)
    :cssText('vertical-align: middle; padding: 5px;')
    :wikitext('[[Файл:'..tostring(ruarms)..'|45px|link=|Герб]]')
    :done()
    :tag('td')
    :cssText('text-align:center; vertical-align:middle; background:'..(self.args['цвет'] or '{{цвет|Крым}}')..'; width:100%; margin-bottom: 0; padding-bottom: 0; border-bottom: 0')
    :wikitext(tostring(rutext))
    :done()
    :done()
    :tag('tr')
    if tostring(ruarms)~=tostring(uaarms) then
    builder=builder:tag('td')
    :cssText('vertical-align: middle; padding: 5px;')
    :wikitext('[[Файл:'..tostring(uaarms)..'|45px|link=|Герб]]')
    end
    builder=builder:tag('td'):cssText('text-align:center; vertical-align:middle; background:'..(self.args['цвет'] or '{{цвет|Крым}}')..'; width:100%; margin-bottom: 0; padding-bottom: 0; border-bottom: 0')
    :wikitext(tostring(uatext))
    :done()
    :done()
    :done()
    return builder
	end

end

function ICH.new(frame, args)
	if not args then
		args = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:Культурное наследие Крым','Песочница/Seryo93/Культурное наследие Крым'}})
		--return
	end
	local obj = {
		frame = frame,
		args = args
	}
	return setmetatable(obj, ICH)
end

local p = {}

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

return p