Interested Article - Велокоманда

Документация
require('strict')
local CTBOX={}
CTBOX.__index=CTBOX

local CTBOXconfig={
	headerstyle='background: #0785c8; color:white; text-align: center;',
	abovestyle='font-size:1.3em;',
}

function CTBOX:checkargs(arr)
	if type(arr)=='table' then
		local Count
		Count=0
		for Index, Value in pairs( tab ) do
		Count=Count + 1
		end
		if Count~=0 then return true end
	end
	return false
end

function CTBOX:veloformtable(builder)
		local VeloformCustom
		if self.args['ИзображениеФормы'] then
		VeloformCustom=self.frame:preprocess('[[Файл:'..self.args['ИзображениеФормы']..'|175px]]')
		end
		local Veloform=VeloformCustom or self.frame:expandTemplate{title='Велосипедная форма', args={pattern_la=self.args['pattern_la1'], pattern_b =self.args['pattern_b1'] or '_unknown',  pattern_ra=self.args['pattern_ra1'], leftarm=self.args['leftarm1'], body= self.args['body1'], rightarm=self.args['rightarm1'], shorts=self.args['shorts1'], title='Командная форма'}}
		builder=builder:tag('table')
			:cssText('width:100%; text-align:center;')
	    	:tag('tr')
    			:tag('td')
    				:wikitext(Veloform)
    	builder=builder:done():done()
end

function CTBOX:render()
	local title=self.frame:expandTemplate{title='wikidata', args={ 'p1448[language!:ru]', self.args['название']}}
	local piccapt=self.frame:expandtemplate{title='wikidata', args={'p2096',self.args['описание изображения']}}
	local pic=self.frame:expandTemplate{title='wikidata', args={'p18',self.args['изображение'], caption=piccapt}}
	local UCIcode=self.frame:expandTemplate{title='wikidata', args={ 'p1998', self.args['код']}}
	local Country=self.frame:expandTemplate{title='wikidata', args={ 'p17', self.args['размещение']}}
	local Founded=self.frame:expandTemplate{title='wikidata', args={ 'p571', self.args['основана']}}
	local Dissolved=self.frame:expandTemplate{title='wikidata', args={ 'p576', self.args['распалась']}}
	local sport=self.frame:expandTemplate{title='wikidata', args={ 'p641', self.args['дисциплины']}}
	local Status=self.frame:expandTemplate{title='wikidata', args={ 'p361', self.args['статус']}} or self.frame:expandTemplate{title='wikidata', args={ 'p31'}}
	local Cycles=self.args['велосипеды']
	local Spareparts=self.args['комплектующие']
	local Genman=self.frame:expandTemplate{title='wikidata', args={ 'p505', self.args['менеджер']}}
	local SportDir=self.frame:expandTemplate{title='wikidata', args={ 'p286', self.args['спортивный директор']}}
	local SportAdm=self.args['спортивный администратор']
	local Season=self.args['сезон']
	local Pastnam=self.args['старое название']
	local Vict=self.args['победы']
	local Veloform=self.frame:expandTemplate{title='Велосипедная форма', args={pattern_la=self.args['pattern_la1'], pattern_b =self.args['pattern_b1'] or '_unknown',  pattern_ra=self.args['pattern_ra1'], leftarm=self.args['leftarm1'], body= self.args['body1'], rightarm=self.args['rightarm1'], shorts=self.args['shorts1'], title='Командная форма'}}
	local Website=self.frame:expandTemplate{title='wikidata', args={'p586',self.args['сайт']}}
	local builder=mw.html:create('table')
    	:addClass('infobox')
    	:addClass('vcard')
    	:cssText('font-size: 90%; text-align: left;')
    	:tag('tr')
    		:tag('td')
    			:attr('colspan',2)
    			:wikitext(title or self.frame:preprocess('{{PAGENAME}}'))
    	if pic then
    	builder:tag('tr')
    		:tag('td')
    		:attr('colspan',2)
    		:css('text-align','center')
    		:wikitext(pic)
    	end
    	if self:checkargs({UCIcode, Country, Founded, Dissolved, sport, Status, Cycles, Spareparts}) then
    	builder:tag('tr')
    	:tag('td')
    	:attr('colspan',2)
    	:addClass(CTBOXconfig.headerstyle)
    	:wikitext('Информация о команде')
    	end
    	if UCIcode then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('UCI код')
    	:done()
    	:tag('td')
    	:wikitext(UCIcode)
    	end
    	if Country then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Размещение')
    	:done()
    	:tag('td')
    	:wikitext(Country)
    	end
    	if Founded then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Основана')
    	:done()
    	:tag('td')
    	:wikitext(Founded)
    	end
    	if Dissolved then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Распалась')
    	:done()
    	:tag('td')
    	:wikitext(Dissolved)
    	end
    	if sport then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Дисциплины')
    	:done()
    	:tag('td')
    	:wikitext(sport)
    	end
    	if Status then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Статус')
    	:done()
    	:tag('td')
    	:wikitext(Status)
    	end
    	if Cycles then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Велосипеды')
    	:done()
    	:tag('td')
    	:wikitext(Cycles)
    	end
    	if Spareparts then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Комплектующие')
    	:done()
    	:tag('td')
    	:wikitext(Spareparts)
    	end
    	if self:checkargs({Genman, SportDir, SportAdm}) then
    	builder:tag('tr')
    	:tag('td')
    	:attr('colspan',2)
    	:addClass(CTBOXconfig.headerstyle)
    	:wikitext('Ключевые персоны')
    	end
    	if Genman then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Генеральный менеджер')
    	:done()
    	:tag('td')
    	:wikitext(Genman)
    	end
    	if SportDir then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Спортивные директора')
    	:done()
    	:tag('td')
    	:wikitext(SportDir)
    	end
    	if SportAdm then
    	builder:tag('tr')
    	:tag('th')
    	:wikitext('Спортивный администратор')
    	:done()
    	:tag('td')
    	:wikitext(SportAdm)
    	end
    	if Season or Pastnam then
    	builder:tag('tr')
    	:tag('td')
    	:attr('colspan',2)
    	:addClass(CTBOXconfig.headerstyle)
    	:wikitext('Предыдущие названия команды')
    	:done()
    	:tag('tr')
    	:tag('th')
    	:wikitext(Season or '')
    	:done()
    	:tag('td')
    	:wikitext(Pastnam or '')
    	end
    	if Vict then
    	builder:tag('tr')
    	:tag('td')
    	:attr('colspan',2)
    	:addClass(CTBOXconfig.headerstyle)
    	:wikitext('Главные победы')
    	:done():done()
    	:tag('tr')
    	:tag('td')
    	:attr('colspan',2)
    	:wikitext(Vict)
    	end
    	builder:tag('tr')
    	:tag('td')
    	:attr('colspan',2)
    	:addClass(CTBOXconfig.headerstyle)
    	:wikitext('Форма')
    	:done()
    	:done()
    	self:veloformtable(builder:tag('tr'):tag('td'):addClass('toccolours'):cssText('padding: 0; background: #ffffff; text-align: center;'):attr('colspan',2))
    	if Website then
    	builder:tag('tr')
    	:tag('td')
    	:attr(colspan,2)
    	:wikitext(Website)
    	end
    	builder=builder:done()
		return builder
end

function CTBOX.new(frame, args)
	if not args then
		args=require('Module:Arguments').getArgs(frame, {wrappers={'Template:Велосипедная команда'}})
		--return
	end
	local obj={
		frame=frame,
		args=args
	}
	return setmetatable(obj, CTBOX)
end

local p={}

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

return
Источник —

Same as Велокоманда