Модул:String/split
Этот модуль предназначен для обработки данных, введённых через разделитель / (косая черта). Используется в шаблонах геотематики (основанных на {{Геокар}}, {{Река}}).
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