Template:If empty

From imedwiki
Jump to navigation Jump to search

Script error: No such module "If empty".

Template documentation[view] [edit] [history] [purge]

Lua error in Module:Lua_banner at line 113: attempt to index field 'edit' (a nil value).

This template is used inside other templates. It takes any number of parameters and returns the first found to be defined and non-empty. If none is found, nothing is returned. Typical usage is like this:

{{If empty |{{{logo|}}} |{{{image|}}} |{{{picture|}}} |default.svg}}
("Return {{{logo|}}} if it has a value; else {{{image|}}} if it has a value; else {{{picture|}}} if it has a value; else return "default.svg".")

This returns the first of the parameters logo, image and picture that is defined and non-empty, otherwise "default.svg".

Rationale

The MediaWiki parameter default function doesn't return the default value for empty parameters. That is, {{{logo|default.svg}}} does not return "default.svg" if the template was called like this: {{template|logo=}}.

The usual workaround for a single parameter is:

{{#if:{{{logo|}}} |{{{logo}}} |default.svg}}
("If {{{logo}}} has a value, return it, else return "default.svg".")

But this becomes complex when several parameters are to be checked:

{{#if:{{{logo|}}} |{{{logo}}} |{{#if:{{{image|}}} |{{{image}}} |{{#if:{{{picture|}}} |{{{picture}}} |default.svg}} }} }}
("If {{{logo}}} has a value, return it; else if {{{image}}} has a value, return that; else if {{{picture}}} has a value, return that; else return "default.svg".")

In these cases, {{if empty}} produces the simpler syntax (as above):

{{if empty |{{{logo|}}} |{{{image|}}} |{{{picture|}}} |default.svg}}

Piping

Parameters used with {{if empty}} must be piped – i.e. include the vertical bar (pipe) symbol ("|") as a trailing character – so that empty or undefined parameters aren't treated as text and returned incorrectly. Hence, for example, {{{logo|}}}, {{{image|}}} and {{{picture|}}} rather than {{{logo}}}, {{{image}}} and {{{picture}}} in the above examples.

Examples

Code Result
{{if empty}} Script error: No such module "If empty". Returns an empty string.
{{if empty|one}} Script error: No such module "If empty". Returns the first parameter that is defined and not empty.
{{if empty|one|two}} Script error: No such module "If empty".
{{if empty|one|two|three|four}} Script error: No such module "If empty".
{{if empty||two}} Script error: No such module "If empty". The first parameter is empty/undefined, so is passed over.
{{if empty||two|three|four}} Script error: No such module "If empty".
{{if empty||two||four}} Script error: No such module "If empty".
{{if empty||||||||||ten}} Script error: No such module "If empty". Unlike in previous versions, this template is no longer limited by 9 parameters.
{{if empty|}} Script error: No such module "If empty". The only parameter is empty or undefined, so returns an empty string.
{{if empty|||||}} Script error: No such module "If empty". Returns an empty string.
{{if empty|{{{1|}}}|{{{2|}}}|three}} Script error: No such module "If empty".
{{if empty|{{{1}}}|{{{2}}}|three}} Script error: No such module "If empty". No pipe-characters following the names of the first two parameters ("1" and "2"), so the first of these returned as text ("{{{1}}}").
{{if empty|{{{logo|}}}|two}} Script error: No such module "If empty".
{{if empty|{{{logo}}}|two}} Script error: No such module "If empty". No pipe-character following the parameter name "logo", so the text "{{{logo}}}" returned.
{{if empty|p=q}} Script error: No such module "If empty". The template identifies the parameters it receives as parameters 1 to 9, not using names such as "p", etc.

See also

This template is based (in parts) on the Template:If empty from the free encyclopedia wikipedia and is licensed under GNU license for free documentation and the Creative Commons Attribution/Share Alike. On wikipedia there is a List of authors accessible. More about importing from wikipedia on page Imedwiki:Importing from wikipedia.