Module:T
Revision as of 20:34, 3 October 2022 by Jacmob (talk | contribs) (Created page with "-- <nowiki> -- Template:T --  local p = {}  function p.main(frame)     local args = frame:getParent().args     return p._main(args) end  function p._main(args)     local link = args[1]     local uri     local targs = {}     local ns     local i = 1          -- strip transclusion modifiers (mw:Help:Magic words#Transclusion modifiers)     link = link         :gsub('safesubst:', '')         :gsub('subst:', '')         :gsub('int:', '')         :gsub('msg:', '')...")
Module documentation
This documentation is transcluded from Module:T/doc. [edit] [history] [purge]
A template link with a variable number of parameters.
Use
To use this for templates, use
- {{T|parameter 1|parameter 2|parameter 3|...|parameter 20}}
To use other namespaces, use the namespace as prefix, for example
- {{T|User:Example}}
And to show transclusions of mainspace pages, use
- {{T|:Bucket}}
Example
{{T|Stub}}
- {{Stub}}
{{T|Stub|Item1|Item2|Item3|Item4|Item5|...}}
- {{Stub|Item5|Item1|Item2|Item3|Item4|...}}
-- <nowiki>
-- [[Template:T]]
--
local p = {}
function p.main(frame)
    local args = frame:getParent().args
    return p._main(args)
end
function p._main(args)
    local link = args[1]
    local uri
    local targs = {}
    local ns
    local i = 1
    
    -- strip transclusion modifiers ([[mw:Help:Magic words#Transclusion modifiers]])
    link = link
        :gsub('safesubst:', '')
        :gsub('subst:', '')
        :gsub('int:', '')
        :gsub('msg:', '')
        :gsub('msgnw:', '')
        :gsub('raw:', '')
        
    ns = mw.text.split(link, ':')[1]
    
    -- check for valid namespace else prepend Template:
    if not (ns == '' or mw.site.namespaces[ns]) then
        link = 'Template:' .. link
    end
    
    -- use fullUrl so it doesn't cause any wanted pages
    uri = mw.uri.fullUrl(link)
    
    -- generate a list of args and params    
    for k, v in pairs(args) do
        -- because lua has no continue statement
        if k ~= 1 then
            if type(k) == 'string' then
                v = k .. '=' .. v
            end
        
            targs[i] = v
            i = i + 1
        end
    end
        
    
    targs = table.concat(targs, '|')
    if targs ~= '' then
        targs = '|' .. targs
    end
    
    return '<code>{{[' .. tostring(uri) ..  ' ' .. args[1] .. ']' .. targs .. '}}</code>'
end
return p
 
