Template:if empty

Hello, you have come here looking for the meaning of the word Template:if empty. In DICTIOUS you will not only get to know all the dictionary meanings for the word Template:if empty, but we will also tell you about its etymology, its characteristics and you will know how to say Template:if empty in singular and plural. Everything you need to know about the word Template:if empty you have here. The definition of the word Template:if empty will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofTemplate:if empty, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

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. By writing {{if empty|a|b|c}} instead of {{#if:a|a|{{#if:b|b|c}}}}, expression a and b do not have to be repeated and evaluated twice. The template provides a fallback order, similar to a try catch-based "It is easier to ask for forgiveness than permission" (EAFP) programming style.

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}} Returns an empty string.
{{if empty|one}} one Returns the first parameter that is defined and not empty.
{{if empty|one|two}} one
{{if empty|one|two|three|four}} one
{{if empty||two}} two The first parameter is empty/undefined, so is passed over.
{{if empty||two|three|four}} two
{{if empty||two||four}} two
{{if empty||||||||||ten}} ten Unlike in previous versions, this template is no longer limited by 9 parameters.
{{if empty|}} The only parameter is empty or undefined, so returns an empty string.
{{if empty|||||}} Returns an empty string.
{{if empty|{{{1|}}}|{{{2|}}}|three}} three
{{if empty|{{{1}}}|{{{2}}}|three}} {{{1}}} 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}} two
{{if empty|{{{logo}}}|two}} {{{logo}}} No pipe-character following the parameter name logo, so the text {{{logo}}} returned.
{{if empty|p=q}} Lua error. The template identifies the parameters it receives as parameters 1 to 9, not using names such as "p", etc.

See also