Module:T

From Melvor Idle
Revision as of 15:18, 18 September 2020 by Falterfire (talk | contribs) (Continuing to shamelessly steal things from the OSRS wiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Documentation for this module may be created at Module:T/doc

-- <nowiki>
-- [[Template:T]]
-- Shamelessly stolen from the OSRS wiki. Basically just gives an easy way to nowiki Template formatting

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, '&#124;')

    if targs ~= '' then
        targs = '&#124;' .. targs
    end
    
    return '<code>{{[' .. tostring(uri) ..  ' ' .. args[1] .. ']' .. targs .. '}}</code>'

end

return p