มอดูล:Ustring
มอดูลนี้ได้รับการจัดอันดับว่าพร้อมใช้งานทั่วไป มีความสมบูรณ์แล้วและคิดว่าจะปราศจากข้อผิดพลาดและพร้อมสำหรับการใช้งานตามความเหมาะสม พร้อมจะกล่าวถึงในหน้าช่วยเหลือและแหล่งข้อมูลวิกิพีเดียอื่น ๆ ว่าเป็นตัวเลือกสำหรับผู้ใช้ใหม่ในการเรียนรู้ เพื่อลดภาระของเซิร์ฟเวอร์และเอาต์พุตที่ไม่ดี ควรปรับปรุงโดยการทดสอบที่กระบะทราย แทนที่จะแก้ไขแบบลองผิดลองถูกซ้ำ ๆ |
This module directly imports all functions from the แม่แบบ:Luaref 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.
|
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}}} |
You can also wrap results in tags. All non-number indexed arguments will be passed to แม่แบบ:Luaref
Usage
แก้{{#invoke:Ustring|function_name|arg1|arg2|...}}
is equivalent to แม่แบบ:Luaref
Example using mw.ustring.sub
แก้{{#invoke:Ustring|sub|s1=abcde|2|4}}
produces:
bcd
Example using mw.ustring.gsub
แก้{{#invoke:Ustring|gsub|s1=1234|23|}}
produces:
14
Example using mw.ustring.char
แก้&#{{#invoke:ustring|char|49|48|59}}
produces:
Example using mw.ustring.match
แก้{{#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
แก้{{#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
แก้Errors from accessing แม่แบบ:Luaref should be maintained, e.g.:
{{#invoke:Ustring|xyzzy}}
should produce:
and
{{#invoke:Ustring|maxPatternLength}}
should produce:
See also
แก้แม่แบบ:String handling templates
คู่มือการใช้งานที่ปรากฏด้านบนนี้ดึงมาจาก มอดูล:Ustring/doc (แก้ | ประวัติ) ผู้เขียนสามารถทำการทดลองได้ที่กระบะทราย (สร้าง | คัดลอก) และชุดทดสอบ (สร้าง) ของมอดูลนี้ หน้าย่อยของมอดูลนี้ |
require('Module:No globals')
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
})