Modul:Ustring
TemplateStyles' src
attribute must not be empty.
This Lua module is used nâng risalah sistem. Changes to it can cause immediate changes to the Wikipedia user interface. To avoid major disruption, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them. |
TemplateStyles' src
attribute must not be empty.
Modul nèka ènilai lasta èyangghuy halè umum. Modul nèka ampon massa' tor èrèken minangka pardhika dâri bug tor lasta otabâ saḍiya èyangghuy nâng kennengan sè pas nâng ka'dimma bisaos. Modul nèka lasta èrasanè nâng halaman-halaman bhântowan tor brèttra sombhâr informasi Wikipedia laènna minangka todhuwân ka'angghuy pamerdhiyan para pangangghuy anyar. Sè ngorangè tempoan server tor output sè ta' èkaporon, modul nèka wajib èpraghi kelabân halaman bak bâddhi tor kasus oddhi tèmbhâng ghi' ngalakonina beccè'an oddhi-tor-lopot marsoddhi. |
This module directly imports all functions from the Cèṭa'an:Scribunto/helper library. Documentation for each function can be found there.
The module takes an indefinite number of arguments. Arguments given as |s1=
, |s2=
, etc, are read first, and are used as strings. All remaining numerical arguments are coerced to number type if possible, and remain strings if not. If you wish for a numerical (i.e. unnamed or "|1=
", "|2=
") to remain a string, you can simply escape it by inserting \
at the beginning of the string.
Note that MediaWiki will always trim whitespace from named arguments; to give arguments with surrounding whitespace you must use unnamed parameters starting with \
.
To pass this... | Write this | Explanation |
---|---|---|
" 0123 " |
|\ 123 |
To get surrounding whitespace must use unnamed, but must precede with \ to indicate that it isn't a number.
|
"0123" |
|s1=0123 |
If you don't need to preserve whitespace use |s1= etc.
|
"0123" |
|1=\0123 |
If you don't need to preserve whitespace explicitly use |1= etc.
|
In another template, to pass its parameter {{{1}}} , preserving whitespace |
|\{{{1}}} |
Must provide the \ with unknown string input.
|
In another template, to pass its parameter {{{1}}} , stripping whitespace |
|s1={{{1}}} |
|
In another template, to pass its parameter {{{1}}} , stripping whitespace |
|1=\{{#if:1|{{{1}}}}} |
You can also wrap results in tags. All other unused arguments will be passed to Cèṭa'an:Scribunto/helper
Usage
beccè'{{#invoke:Ustring|function_name|arg1|arg2|...}}
is equivalent to Cèṭa'an:Scribunto/helper
Example using mw.ustring.sub
beccè'{{#invoke:Ustring|sub|s1=abcde|2|4}}
produces:
bcd
Example using mw.ustring.gsub
beccè'{{#invoke:Ustring|gsub|s1=1234|23|}}
produces:
14
Example using mw.ustring.char
beccè'&#{{#invoke:ustring|char|49|48|59}}
produces:
Example using mw.ustring.match
beccè'{{#invoke:Ustring|match|s1=abcde|s2=(c%w)}}
produces:
cd
Note: Only the first match is returned. Additional returns are omitted because mw.ustring.gsub's second return value is generally undesirable.
Example using tag arguments
beccè'{{#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}}
produces:
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
Note that:
<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>
produces:
{{#invoke:Ustring|match
|s1={{Module:Ustring}}|%s%s%sif%snot%s[^%s]+%sthen.+%
<!--enter an actual newline character to match '\n'-->%s%s%send}}
Errors
beccè'Errors from accessing Cèṭa'an:Scribunto/helper should be maintained, e.g.:
{{#invoke:Ustring|xyzzy}}
should produce:
and
{{#invoke:Ustring|maxPatternLength}}
should produce:
See also
beccè'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
})