module:If preview

local p = {}

local getArgs = require("Module:Arguments").getArgs

local yn = require("Module:Yesno")

local cfg = mw.loadData('Module:If preview/configuration')

--[[

main

This function returns either the first argument or second argument passed to

this module, depending on whether the page is being previewed.

]]

function p.main(frame)

local args = getArgs(frame)

if cfg.preview then

return args[1] or ''

else

return args[2] or ''

end

end

--[[

pmain

This function returns either the first argument or second argument passed to

this module's parent (i.e. template using this module), depending on whether it

is being previewed.

]]

function p.pmain(frame)

return p.main(frame:getParent())

end

local function warning_text(warning)

return mw.ustring.format(

cfg.warning_infrastructure,

cfg.templatestyles,

warning

)

end

function p._warning(args)

local warning = args[1] and args[1]:match('^%s*(.-)%s*$') or ''

if warning == '' then

return warning_text(cfg.missing_warning)

end

if not cfg.preview then return '' end

if yn(args['consolewarning']) then mw.addWarning(args[1] or cfg.missing_warning) end

return warning_text(warning)

end

--[[

warning

This function returns a "preview warning", which is the first argument marked

up with HTML and some supporting text, depending on whether the page is being previewed.

]]

-- function p.warning(frame)

-- mw.addWarning(frame.args[1] or cfg.missing_warning)

-- return p._warning(frame.args)

-- end

--[[

warning, but for pass-through templates like {{preview warning}}

]]

function p.pwarning(frame)

local args = getArgs(frame)

return p._warning(args)

end

--[[

Does both mw.addWarning and preview warning

]]

function p.warn(text)

if text == nil or text == "" then return "" end

mw.addWarning(text)

return p._warning({text})

end

--[[

Console warning

]]

function p.consoleWarning(frame)

local args = getArgs(frame)

mw.addWarning(args[1] or cfg.missing_warning)

return ''

end

return p