Модуль:Getlinks

Версия от 02:27, 24 февраля 2022; Adam (обсуждение | вклад) (Новая страница: «local p = {} function p.links(frame) local pframe = frame:getParent(); local config = frame.args; local args = pframe.args; local result = {}; local i = 1; for s in mw.ustring.gmatch(config[1], "%[%[.-%]%]") do s=mw.ustring.gsub(s, "%|.*","]]"); --убираем за | s=mw.ustring.gsub(s, "%#.*","]]"); --убираем за # if (not mw.ustring.match(s, "%[%[.-%:") ) then --это надо переделать...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Модуль содержит функцию, возвращающую список тептар-ссылок на статьи (из ОП, без ":" в ссылке) в переданной строке (первый параметр), разделенных сепаратором sep и отсортированные при непустом значении sort.


local p = {}

function p.links(frame)
    local pframe = frame:getParent();
    local config = frame.args;
    local args = pframe.args;
    
 	local result = {};
    local i = 1;
    for s in mw.ustring.gmatch(config[1], "%[%[.-%]%]") do
    	s=mw.ustring.gsub(s, "%|.*","]]"); --убираем за |
    	s=mw.ustring.gsub(s, "%#.*","]]"); --убираем за #
   
    	if (not mw.ustring.match(s, "%[%[.-%:") ) then --это надо переделать нормально, в названии может быть и двоеточие
    		result[i] = s;
        	i=i+1;
        end	
	end
	
	--убираем дубликаты
	local h = {};
	local res2 = {};

	for i,v in ipairs(result) do
    	if (not h[v]) then
    		res2[#res2+1] = v;
    		h[v] = true;
    	end	
   	end
	result=res2;

	if config['sort'] then
		table.sort(result);
	end
	
	if config['sep'] then
		sep=args['sep'];
	else 
		sep = " • ";
	end	
	
	return table.concat( result, sep)
end

return p;