{{i}} Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]

Цей модуль впроваджує всі функції з бібліотеки Шаблон:Luaref. Документацію про кожну функцію можна знайти там.

Модуль приймає нескінченну кількість аргументів. Аргументи, що передані як |s1=, |s2= тощо, читаються першими та використовуються як рядки. Всі залишені нумеровані аргументи перетворюються на числовому типу, якщо це можливо та лишаються рядком, якщо неможливо перетворити. Якщо ви хочете, щоб нумеровані (наприклад, неназвані параметри або «|1=», «|2=») аргументи лишалися рядками, то ви можете уникнути цього, вставивши \ на початку рядка.

Зверніть увагу, що MediaWiki завжди обрізає пробіли на початку та в кінці рядка в іменованих аргументах; щоб передати аргументи з огорнутими навколо пробілами, то ви повинні використовувати неназвані параметри, в яких рядки починаються з \.

Як передавати незручсчні рядки
Щоб передати це... Запишіть це Пояснення
«  0123  » |\ 123 Щоб отримати обгортальні пробіли, що оточують значення, ви повинні використовувати неназвані параметри, але вони мають починатися з \, щоб позначити, що значення не є числом.
«0123» |s1=0123 Якщо вам не потрібно залишити обгортальні пробіл, то використайте |s1= тощо.
«0123» |1=\0123 Якщо вам не потрібно явно зберігати обгортальні пробіли, то використайте |1= тощо.
В іншому шаблоні, щоб передати його параметри {{{1}}}, зберігаючи обгортальні пробіли |\{{{1}}} Повинні надати \ з невідомим вводом рядка.
В іншому шаблоні, щоб передати його параметри {{{1}}}, вилучивши обгортальні пробіли |s1={{{1}}}
В іншому шаблоні, щоб передати його параметри {{{1}}}, вилучивши обгортальні пробіли |1=\{{#if:1|{{{1}}}}}

Ви можете огорнути результат в теги. Всі інші не використані аргументи мають бути передані до Шаблон:Luaref

Використання

ред.

{{#invoke:Ustring|function_name|arg1|arg2|...}} відповідає Шаблон:Luaref

Приклад використання mw.ustring.sub

ред.

{{#invoke:Ustring|sub|s1=abcde|2|4}}

створює:

bcd

Приклад використання mw.ustring.gsub

ред.

{{#invoke:Ustring|gsub|s1=1234|23|}}

створює:

14

Приклад використання mw.ustring.char

ред.

&#{{#invoke:ustring|char|49|48|59}}

створює:




Приклад використання mw.ustring.match

ред.

{{#invoke:Ustring|match|s1=abcde|s2=(c%w)}}

створює:

cd

Зверніть увагу: Лише перший збіг повертається. Додаткові повернення опущенні, бо знчення другого повернення функції mw.ustring.gsub загалом є небажаним.

Приклад використання аргуметів з тегами

ред.
{{#invoke:Ustring|match
|s1={{Module:Ustring}}|%s%s%sif%snot%s[^%s]+%sthen.+%
<!--enter an actual newline character to match '\n'-->%s%s%send
|tag=syntaxhighlight|lang=lua}}

створює:

			if not fargs.tag then
				return (what(unpack(args)))		-- Outside parens truncate to first result avoiding tail call
			end
			local tagargs = {}
			for x, y in pairs(fargs) do
				if not fargsused[x] then tagargs[x] = y end
			end

Зверніть увагу, що:

<syntaxhighlight lang="lua">{{#invoke:Ustring|match
|s1={{Module:Ustring}}|%s%s%sif%snot%s[^%s]+%sthen.+%
<!--enter an actual newline character to match '\n'-->%s%s%send}}</syntaxhighlight>

створює:

{{#invoke:Ustring|match
|s1={{Module:Ustring}}|%s%s%sif%snot%s[^%s]+%sthen.+%
<!--enter an actual newline character to match '\n'-->%s%s%send}}

Помилки

ред.

Помилки, що виникли через доступ до Шаблон:Luaref, повинні бути оброблені, наприклад:

{{#invoke:Ustring|xyzzy}}

повинен створювати:

Помилка скрипту: Функції «xyzzy» не існує.

та

{{#invoke:Ustring|maxPatternLength}}

повинен створювати:

Помилка скрипту: «maxPatternLength» не є функцією.

require('strict')
return setmetatable({}, {
	__index = function(t, k)
		local what = mw.ustring[k]
		if type(what) ~= "function" then
			return what
		end
		return function(frame)
			local fargs = frame.args
			local fargsused = { tag = true }
			local args = {}
			local str_i = 1
			while fargs['s' .. str_i] do
				fargsused['s' .. str_i] = true
				args[str_i] = fargs['s' .. str_i]
				str_i = str_i + 1
			end
			for i, v in ipairs(fargs) do
				fargsused[i] = true
				args[i + str_i - 1] = tonumber(v) or v:gsub("^\\", "", 1)
			end
			if not fargs.tag then
				return (what(unpack(args)))		-- Outside parens truncate to first result avoiding tail call
			end
			local tagargs = {}
			for x, y in pairs(fargs) do
				if not fargsused[x] then tagargs[x] = y end
			end
			return frame:extensionTag{name = fargs.tag, content = what(unpack(args)), args = tagargs}
		end
	end
})