Модуль:FormationsList

Поделись знанием:
Перейти к: навигация, поиск

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

local F={}

function F.Formations(frame)
	local dis=frame.args[1];
	local flist={};
	local s='';
	local o=mw.title.new(dis,'');
	if (o) then
		local page=o:getContent();
		if (page) then
			local start=mw.ustring.find(page,'\n*',0,true);
			if (start) then
				local i=1;
				repeat
					local ends=mw.ustring.find(page,'\n',start+1,true);
					if (not ends) then
						ends=#page+1;	-- last string
					end
					flist[i]=mw.text.trim(mw.ustring.sub(page,start+2,ends-1));
					start=ends;
					i=i+1;
					local char=mw.ustring.sub(page,start+1,start+1);
				until char~='*'
			end
		end
	end
	local fcount=#flist;
	if (fcount == 0) then
		fcount=tonumber(frame.args[2]) or 0;
	end
	local femlist={'армия','дивизия','бригада','эскадрилья'};
	local fgen='формировался';
	for i=1,#femlist do
		if mw.ustring.find(dis,femlist[i]) then
			fgen='формировалась';
			break
		end
	end
	local fnum;
	if ((fcount>1) and (fcount<5)) then
		fnum='раза';
	else
		fnum='раз';
	end
	s=mw.ustring.format("''Всего %s %s %i %s. См. [[%s|список других формирований]]''",dis,fgen,fcount,fnum,dis);
	if (#flist>0) then
		s='<div class="mw-collapsible mw-collapsed" data-expandtext="▽" data-collapsetext="△" style="color:transparent; display:inline-block"><span class="dablink noprint" style="color:black">'..s..'</span><div class="mw-collapsible-content" style="position:absolute; border:1px solid #aaa; color:black; z-index:10; background:white; margin-left:10px; margin-top:5px; padding:5px; display:none">';
		for i=1,fcount do
			s=s..flist[i];
			if (i<fcount) then
				s=s..'<br />';
			end
		end
		s=s..'</div></div>';
	end
	s=mw.getCurrentFrame():preprocess(s);
	return s
end

return F