Module:Tlx
File:Alpha lowercase.svg | This module is rated as alpha. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome. |
UsageEdit
{{#invoke:Tlx|function_name|SISTER=sister project name}}
Implements a version of {{tlx}}, {{tlxs}}, {{tlxb}}, {{tlxi}}, {{tlxc}}, and {{temt}}.
{{tlx}} and {{temt}} use the function name tlx
, {{tlxs}} uses tlxs
, {{tlxb}} uses tlxb
, {{tlxi}} uses tlxi
, and {{tlxs}} uses tlx
with |SISTER=commons:
.
Generally, a call to this module can be placed at the front of a template call to display formatted code instead of the template output. For example, if this module is implemented at {{tlx/sandbox}}, a function call such as {{convert|1|m|disp=flip}}
can be displayed as formatted text using the code {{tlx/sandbox|convert|1|m|disp=flip}}
, which outputs Template:Tlx/sandbox.
This has the following caveats:
|LANG=
,|SISTER=
, and|subst=
are reserved for compatibility with the legacy {{tlx}} template. In order to display{{x0|LANG=de|SISTER=wikt|subst=yes}}
you would need to use workarounds from the old template such as{{tlx/sandbox|x0|<nowiki>LANG=en</nowiki>|SISTER{{=}}wikt|4=subst=yes}}
to produce Template:Tlx/sandbox.- Parameters are presented in alphabetical order, starting with numbered parameters, regardless of input order.
{{tlx/sandbox|x0|z=y|x=w|a|b}}
displays Template:Tlx/sandbox - Since the
|1=
parameter is used for the template name, numbered parameters where the number is explicitly specified must be offset by one (as was true with the legacy {{tlx}} template):{{tlx/sandbox|x0|2=first|3=second|4=third=***}}
produces Template:Tlx/sandbox.
- NOTE: you must be careful not to double-define a parameter.
{{tlx/sandbox|x0|first|2=second=**}}
will output Template:Tlx/sandbox (and generate a warning) since the2
parameter was defined twice. Use{{tlx/sandbox|x0|first|3=second=**}}
to display Template:Tlx/sandbox.
- NOTE: you must be careful not to double-define a parameter.
- To display the number of a numbered parameter explicitly, the same workarounds from the legacy template still work:
{{tlx/sandbox|x0|<nowiki>1=first</nowiki>|2{{=}}second|4=3=third}}
produces Template:Tlx/sandbox
local p = {}
bold, ital, subst = "", false, false
function p.tlxs(frame)
subst=true
return p.tlx(frame)
end
function p.tlxb(frame)
bold="'''"
return p.tlx(frame)
end
function p.tlxi(frame)
ital = true
return p.tlx(frame)
end
function p.tlx(frame)
local outStr = frame:extensionTag{name='nowiki',content='{{'}
local args = frame:getParent().args
if (subst or args['subst'] or '') ~= '' then outStr = outStr..'[[Help:Substitution|subst]]:' end
local tempTitle = (args[1] or ' ')
if mw.title.new(tempTitle) ~= nil then
if (mw.title.new(tempTitle).nsText or '') == '' and (mw.title.new(tempTitle).interwiki or '') == '' then
tempLink=frame:callParserFunction{name='ns',args='Template'}..':'..tempTitle
else
tempLink = tempTitle
end
else
tempLink = tempTitle
end
outStr = outStr..'[[:'..(args['LANG'] or frame.args['LANG'] or '')..(args['SISTER'] or frame.args['SISTER'] or '')..tempLink..'|'..bold..tempTitle..bold..']]'
local k, v
for k, v in pairs(args) do
if type(k) == 'number' and k ~= 1 then
if ital then outStr = outStr..'|'..frame:extensionTag{name='var',content=v} else outStr = outStr..'|'..v end
elseif k ~= 1 and k ~= 'subst' and k ~= 'LANG' and k ~= 'SISTER' then
if ital then outStr = outStr..'|'..frame:extensionTag{name='var',content=k..'='..v} else outStr = outStr..'|'..k..'='..v end
end
end
outStr = outStr..frame:extensionTag{name='nowiki',content='}}'}
return frame:extensionTag{name='code',content=outStr}
end
return p