Модуль:Ustring
Цей модуль позначений як К:реліз, готовий до загального вжитку (37). Він досягнув стадії готовності і вважається, що вільний від помилок і може використовуватись всюди, де знадобиться. Його можна вживати на допоміжних сторінках та інших сторінках Вікіпедії як можливість для навчання новачків. Аби зменшити навантаження на сервери та некоректний показ сторінок, його можна вдосконалювати в рамцях чернеткового тестування, а не з застосуванням спроб і помилок. |
Цей модуль впроваджує всі функції з бібліотеки Шаблон: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» не є функцією.
Документація вище включена з Модуль:Ustring/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
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
})