Модуль: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