Jump to content

Module:Error/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
sync
add category option and refactor the arg-getting code to use Module:Arguments
Line 1: Line 1:
-- This module implements {{error}}.
-- This module implements {{error}}.

local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')


local p = {}
local p = {}


function p.error(frame)
local HtmlBuilder = require('Module:HtmlBuilder')
local args = getArgs(frame)
return p._error(args)
end


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


-- Work out what html tag we should use.
-- Work out what HTML tag we should use
if not (tag == 'p' or tag == 'span' or tag == 'div') then
tag = tag:lower()
if not (tag == 'p' or tag == 'span' or tag == 'div') then
tag = 'strong'
tag = 'strong'
end
end
-- Generate the category
if yesno(category, true) ~= false then
category = '[[Category:Template errors]]'
else
category = ''
end


-- Generate the html.
-- Generate the HTML
local root = HtmlBuilder.create(tag)
local ret = string.format(
'<%s class="error">%s</%s>%s',
root
tag, message, tag, category
.addClass('error')
)
.wikitext(message)
return ret

return tostring(root)
end

function p.error(frame)
local args
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
-- if the message parameter is present but blank, change it to nil so that Lua will
-- consider it false.
if args.message == "" then
args.message = nil
end
return _error(args)
end
end



Revision as of 01:48, 24 February 2014

-- This module implements {{error}}.

local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')

local p = {}

function p.error(frame)
	local args = getArgs(frame)
	return p._error(args)
end

function p._error(args)
	-- Initialise variables
	local message = args.message or args[1] or error('no message specified', 2)
	local tag = args.tag or ''
	local category = args.category

	-- Work out what HTML tag we should use
	tag = tag:lower()
	if not (tag == 'p' or tag == 'span' or tag == 'div') then
		tag = 'strong'
	end
	
	-- Generate the category
	if yesno(category, true) ~= false then
		category = '[[Category:Template errors]]'
	else
		category = ''
	end

	-- Generate the HTML
	local ret = string.format(
		'<%s class="error">%s</%s>%s',
		tag, message, tag, category
	)
	return ret
end

return p