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

split вироиш

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

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


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

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

lang вироиш

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

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

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


reflang вироиш

Принимает строку параметров через разделитель, возвращает список шаблонов указаний языка ({{ref-lang}}).

Примеры
{{#invoke:String/split|reflang|ru/fa/az/kk/kum/lez/tk}}

 (рус.) (форс.) (озар.) (қаз.) (кум.) (лезг.) (туркм.)

{{#invoke:String/split|reflang|ru/fa/az/kk/kum/рус./lez/tk|в}}

Хатои Lua: expandTemplate: template "ref-рус." does not exist.


local str = {}

function str.split( 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 == 0 or mw.ustring.match( s, '[\]\[\<\>\127]' ) then
    	return red
    end
    
    frame.args = args
    
    return listLang(frame)
end

function str.reflang( frame )
    local s = frame.args[1] or '';
    local v = frame.args[2] or false;

    if s == '' then
        return
    end
	
    local args = {}
    local iterator = mw.ustring.gmatch(s, "[^/]+");
    for w in iterator do
    	table.insert(args, w)
    end
    
    if #args == 0 then
        return
    end

    if v then
        args['в'] = 'в'
    end
	
    local listRef = require('Module:Languages').list_ref
    
    frame.args = args
    
    return listRef(frame)
end


return str