Module:Error: Difference between revisions

From TEPwiki, Urth's Encyclopedia
Jump to navigation Jump to search
Content added Content deleted
(actually, don't trim whitespace, as the original template doesn't do this)
(also don't bother removing whitespace values from the parameters, as the original template doesn't do this either)
Line 29: Line 29:
-- We're being called via #invoke. The args are passed through to the module
-- We're being called via #invoke. The args are passed through to the module
-- from the template page, so use the args that were passed into the template.
-- from the template page, so use the args that were passed into the template.
origArgs = frame.args
args = frame.args
else
else
-- We're being called from another module or from the debug console, so assume
-- We're being called from another module or from the debug console, so assume
-- the args are passed in directly.
-- the args are passed in directly.
origArgs = frame
args = frame
end
end
-- ParserFunctions considers whitespace to be false, so to preserve the previous
-- behavior of the template, change any arguments consisting only of whitespace
-- to nil, so Lua will consider them false too.
local args = {}
for k, v in pairs(origArgs) do
if mw.ustring.match(v, '%S') then
args[k] = v
end
end

return _error(args)
return _error(args)
end
end

Revision as of 06:54, 4 April 2013

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

-- This module implements {{error}}.

local p = {}

local HtmlBuilder = require('Module:HtmlBuilder')

local function _error(args)
    local message = args.message or args[1] or error('no message specified', 2)
    message = tostring(message)
    local tag = mw.ustring.lower(tostring(args.tag))

    -- Work out what html tag we should use.
    if not (tag == 'p' or tag == 'span' or tag == 'div') then
        tag = 'strong'
    end

    -- Generate the html.
    local root = HtmlBuilder.create(tag)
    root
        .addClass('error')
        .wikitext(message)

    return tostring(root)
end

function p.error(frame)
    local origArgs
    if frame == mw.getCurrentFrame() then
        -- We're being called via #invoke. The args are passed through to the module
        -- from the template page, so use the args that were passed into the template.
        args = frame.args
    else
        -- We're being called from another module or from the debug console, so assume
        -- the args are passed in directly.
        args = frame
    end
    return _error(args)
end

return p