Module:Error: Difference between revisions

From TEPwiki, Urth's Encyclopedia
Jump to navigation Jump to search
Content added Content deleted
(test for all whitespace values rather than just the blank string)
(more comments)
Line 9: Line 9:
local tag = mw.ustring.lower(tostring(args.tag))
local tag = mw.ustring.lower(tostring(args.tag))


-- Work out what html tag we should use.
local t
local t
if tag == 'p' or tag == 'span' or tag == 'div' then
if tag == 'p' or tag == 'span' or tag == 'div' then
Line 17: Line 18:
local root = HtmlBuilder.create(t)
local root = HtmlBuilder.create(t)


-- Generate the html
root
root
.addClass('error')
.addClass('error')

Revision as of 01:54, 2 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 s = args.message or args[1] or error('no message specified', 2)
    local tag = mw.ustring.lower(tostring(args.tag))

    -- Work out what html tag we should use.
    local t
    if tag == 'p' or tag == 'span' or tag == 'div' then
        t = tag
    else
        t = 'strong'
    end
    local root = HtmlBuilder.create(t)

    -- Generate the html
    root
        .addClass('error')
        .wikitext(tostring(s))

    return tostring(root)
end

function p.error(frame)
    local origArgs
    if frame == mw.getCurrentFrame() then
        -- We're being called via #invoke. If the invoking template passed any args, use
        -- them. Otherwise, use the args that were passed into the template.
        origArgs = frame:getParent().args
        for k, v in pairs(frame.args) do
            origArgs = frame.args
            break
        end
    else
        -- We're being called from another module or from the debug console, so assume
        -- the args are passed in directly.
        origArgs = frame
    end
        -- ParserFunctions considers the empty string to be false, so to preserve the previous 
        -- behavior of the template, change any empty arguments 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

    local args = origArgs
    return _error(args)
end

return p