Модул:String/strip

Мавод аз Википедиа — донишномаи озод
Jump to navigation Jump to search

Этот модуль предназначен для обработки данных, введённых через разделитель / (косая черта). Используется в шаблонах геотематики (основанных на {{Геоқуттӣ}}, {{Дарё}}).

strip[вироиш]

Принимает строку параметров через разделитель (или без него, если значение одно).

Корбурд
{{#invoke:String/strip|strip|целевая_строка|o=обёртка|r=разделитель|m=максимальное_количество|l=вывести_как_список|t=обернуть_в_шаблон|nodis=убрать_уточнение_в_ссылке}}
Намунаҳо
{{#invoke:String/strip|strip|Танзания/Кения/Уганда|t=Парчамбандӣ|l=1}}


{{#invoke:String/strip|strip|Кагера (вилоят)/Мванза (область)/Мара (область)/Ньянза/Западная провинция (Кения)/Восточная область (Уганда)/Центральная область (Уганда)|o=[[%]]|r=, |nodis=1}}

Кагера, Мванза, Мара, Ньянза, Западная провинция, Восточная область, Центральная область

lang[вироиш]

Принимает строку параметров через разделитель, возвращает список национальных названий.

Примеры
{{#invoke:String/strip|lang|tg/Баҳри Каспий/fa/دریای خزر/az/Xəzər dənizi/kk/Каспий теңізі/kum/Хазар денгиз/lez/Каспи гьуьл/tk/Hazar deňzi}}

тоҷ. Баҳри Каспий, форс. دریای خزر, озар. Xəzər dənizi, қаз. Каспий теңізі, кум. Хазар денгиз, лезг. Каспи гьуьл, туркм. Hazar deňzi


local str = {}

function str.strip( frame )
	local ret = ''
    local s = frame.args[1] or '';
    
    if s == '' then
		return
	end
	
    local o = frame.args['o'] or '%';
    local l = frame.args['l'] or '';
    local t = frame.args['t'] or '';
    local r = frame.args['r'] or '';
    local m = tonumber(frame.args['m']) or 1000;
    local n = frame.args['nodis'] or '0';
	
    if l ~= '' then
    	ret = '<ul>'
    	o = '<li>' .. o .. r .. '</li>'
    else
    	o = o .. r
    end
    
    local i = 0
    local iterator = mw.ustring.gmatch(s, "[^/]+");
    for w in iterator do
    	if t ~= '' then
    		local args = {}
    		args[1] = w
    		ret = ret .. mw.ustring.gsub( o, '%%', frame:expandTemplate{ title = t, args = args } )
    	else
	    	if n == '1' then
	    		w = w .. '|' .. mw.ustring.gsub( w, '%s?%(.*%)$', '' )
			end
	    	w = mw.ustring.gsub( o, '%%', w )
	    	ret = ret .. w
    	end
    	
    	i = i + 1
    	if i == m then
    		break
    	end
    end 
    
    if l ~= '' then
    	ret = mw.ustring.gsub( ret, r .. '</li>$', '</li>' )
    	ret = ret .. '</ul>'
    else
    	ret = mw.ustring.gsub( ret, r .. '$', '' )
    end
    
    return ret
end

function str.lang( frame )
	local red = '[[Гурӯҳ:Википедия:Саҳифаҳои дорои хато дар номгузории миллӣ]]<span style="color: red;">Дар параметри «Номи миллӣ» синтаксис риоя нашудааст: [[:Гурӯҳ:Википедия:Саҳифаҳои дорои хато дар номгузории миллӣ|пуркунии саҳеҳи он]]: «коди забон/ном/коди забони дуюм/ном». Лутфан, хатои додашударо ислоҳ намоед!</span>'
    local s = frame.args[1] or '';
    
    if s == '' then
		return
	end
	
	local listLang = require('Module:Languages').list
    
    local i = 1
    local args = {}
    local iterator = mw.ustring.gmatch(s, "[^/]+");
    for w in iterator do
    	args[i] = w
    	i = i + 1
    end
    
    if i == 2 then
    	return red
    end
    
    frame.args = args
    
    return listLang(frame)
end

return str