Module:If not given or empty

-- This module's check_parameter function checks whether a parameter is given, empty, or nonempty in a template call.

-- It is intended to be called from templates only, as {{#invoke:If not given or empty|check_parameter|parameter name|before|after|when=NG EM NE|notgiven=|empty=|notempty=}}

-- This is similar to {{If then show|{{{parameter name|}}}|...|before|after}}, but also checks if the parameter is *present* in the template call.

-- before and after are added only for cases in which when= contains the codes NG (for not given), EM (given but empty), NE (given and not empty)

local p = {}

function p.check_parameter(frame)

local m_args = frame.args

local t_args = frame:getParent().args

local check_param = m_args[1] and mw.text.trim(m_args[1]) or ''

if (check_param ~= '') then

local s, c

if not t_args[check_param] then

s = m_args.notgiven or ''

c = 'NG'

elseif t_args[check_param] == '' then

s = m_args.empty or ''

c = 'EM'

else

s = m_args.notempty or ''

c = 'NE'

end

local before = ''

local after = ''

local when = m_args.when or ''

if when:find(c) then

before = m_args[2]

after = m_args[3]

end

return before .. s .. after

end

error("Function called without template's parameter name")

end

return p