Модуль:Ustring
Цей модуль позначений як К:реліз, готовий до загального вжитку (43). Він досягнув стадії готовності й вважається, що вільний від помилок і може використовуватись всюди, де знадобиться. Його можна вживати на допоміжних сторінках та інших сторінках Вікіпедії як можливість для навчання новачків. Аби зменшити навантаження на сервери та некоректний показ сторінок, його можна вдосконалювати в рамцях чернеткового тестування[en], а не з застосуванням спроб і помилок. |
Цей модуль впроваджує всі функції з бібліотеки mw.ustring
. Документацію про кожну функцію можна знайти там.
Модуль приймає нескінченну кількість аргументів. Аргументи, що передані як |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}}}}} |
Ви можете огорнути результат в теги. Всі інші не використані аргументи мають бути передані до
frame:extensionTag
Використання
[ред. код]{{#invoke:Ustring|function_name|arg1|arg2|...}}
відповідає mw.ustring.function_name
( arg1, arg2, ... )
Приклад використання 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}}
Помилки
[ред. код]Помилки, що виникли через доступ до mw.ustring
, повинні бути оброблені, наприклад:
{{#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
})