Модуль: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|в}}
[рус.] [перс.] [азерб.] [каз.] [кум.] [рус.] [лезг.] [туркм.]
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