Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
ANRC Universe
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Template:If empty/doc
Template
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Documentation subpage}} <!----PLEASE ADD TEMPLATE CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE----> {{Cascade-protected template}} {{used in system}} {{Lua|Module:If empty}} 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 <code><nowiki>{{if empty|a|b|c}}</nowiki></code> instead of <code><nowiki>{{#if:a|a|{{#if:b|b|c}}}}</nowiki></code>, expression a and b do not have to be [[Don't repeat yourself|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" ([[Time-of-check to time-of-use#Preventing TOCTOU|EAFP]]) programming style. Typical usage is like this: : <code><nowiki>{{If empty |{{{logo|}}} |{{{image|}}} |{{{picture|}}} |default.svg}}</nowiki></code> : β <nowiki>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".</nowiki> 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, <code><nowiki>{{{logo|default.svg}}}</nowiki></code> does not return "default.svg" if the template was called like this: <code><nowiki>{{template|logo=}}</nowiki></code>. The usual workaround for a single parameter is: : <code><nowiki>{{#if:{{{logo|}}} |{{{logo}}} |default.svg}}</nowiki></code> : β <nowiki>If {{{logo}}} has a value, return it, else return "default.svg".</nowiki> But this becomes complex when several parameters are to be checked: : <code><nowiki>{{#if:{{{logo|}}} |{{{logo}}} |{{#if:{{{image|}}} |{{{image}}} |{{#if:{{{picture|}}} |{{{picture}}} |default.svg}} }} }}</nowiki></code> : β <nowiki>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".</nowiki> In these cases, {{tlf|if empty}} produces the simpler syntax (as above): : <code><nowiki>{{if empty |{{{logo|}}} |{{{image|}}} |{{{picture|}}} |default.svg}}</nowiki></code> ====Piping==== Parameters used with {{tlf|if empty}} must be [[Pipe (Unix)|pipe]]d β i.e. include the [[Vertical bar|vertical bar (pipe) symbol]] {{nowrap|("{{thin space}}|{{thin space}}")}} as a trailing character β so that empty or undefined parameters aren't treated as text and returned incorrectly. Hence, for example, <code><nowiki>{{{logo|}}}</nowiki></code>, <code><nowiki>{{{image|}}}</nowiki></code> and <code><nowiki>{{{picture|}}}</nowiki></code> rather than {{param|logo}}, {{param|image}} and {{param|picture}} in the above examples. ===Examples=== {{Aligned table |class=wikitable |cols=3 |col1style=padding-right:1.0em; |col2style=padding-left:0.5em;padding-right:1.0em; |col3style=padding-left:0.5em; |row1style=background:whitesmoke;padding-left:0.5em;font-weight:bold; | Code | Result | | {{tlc|if empty}} | {{if empty}} | Returns an empty string. | {{tlc|if empty|one}} | {{if empty|one}} | Returns the first parameter that is defined and not empty. | {{tlc|if empty|one|two|three|four}} | {{if empty|one|two|three|four}} | | <code><nowiki>{{if empty||two}}</nowiki></code> | {{if empty||two}} | The first parameter is empty/undefined, so is passed over. | <code><nowiki>{{if empty||two||four}}</nowiki></code> | {{if empty||two||four}} | | <code><nowiki>{{if empty||||||||||ten}}</nowiki></code> | {{if empty||||||||||ten}} | Unlike in previous versions, this template is no longer limited by 9 parameters. | {{tlc|if empty{{!}}}} | {{if empty|}} | The only parameter is empty or undefined, so the template returns an empty string. | {{tlc|if empty|{{!}}{{!}}{{!}}{{!}}}} | {{if empty||||}} | Returns an empty string. | <code><nowiki>{{if empty|{{{1|}}}|{{{2|}}}|three}}</nowiki></code> | {{if empty|{{{1|}}}|{{{2|}}}|three}} | Neither 1 nor 2 are defined, so "three" is returned. | <code><nowiki>{{if empty|{{{1}}}|{{{2}}}|three}}</nowiki></code> | {{if empty|{{{1}}}|{{{2}}}|three}} | No pipe-characters following the names of the first two parameters ("1" and "2"), so the first is returned as text ("{{{1}}}"). | <code><nowiki>{{if empty|{{{logo|}}}|two}}</nowiki></code> | {{if empty|{{{logo|}}}|two}} | | <code><nowiki>{{if empty|{{{logo}}}|two}}</nowiki></code> | {{if empty|{{{logo}}}|two}} | No pipe-character following the parameter name "logo", so the text "{{{logo}}}" is returned. | <code><nowiki>{{if empty|p=q}}</nowiki></code> | {{if empty|p=q}} | The template identifies the parameters it receives as parameters 1 to 9, not using names such as "p", etc. }} ===See also=== * {{tl|if all}} * {{tl|if either}} * [[Help:Parameter default]] * {{tl|Category see also if exists 2}} <includeonly>{{Sandbox other| | <!-- ADD TEMPLATE CATEGORIES BELOW THIS LINE, PLEASE: --> [[Category:If-then-else templates]] [[Category:Parameter selection templates]] }}</includeonly>
Summary:
Please note that all contributions to ANRC Universe may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
ANRC Universe:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Pages included on this page:
Template:Aligned table
(
edit
)
Template:Cascade-protected template
(
edit
)
Template:Documentation subpage
(
edit
)
Template:If empty
(
edit
)
Template:Lua
(
edit
)
Template:Mbox
(
edit
)
Template:Nowrap
(
edit
)
Template:Param
(
edit
)
Template:Sandbox other
(
edit
)
Template:Strong
(
edit
)
Template:Template link
(
edit
)
Template:Template link code
(
edit
)
Template:Template link with link off
(
edit
)
Template:Terminate sentence
(
edit
)
Template:Thin space
(
edit
)
Template:Tl
(
edit
)
Template:Tlc
(
edit
)
Template:Tlf
(
edit
)
Template:Used in system
(
edit
)
Template:Yesno
(
edit
)
Module:Aligned table
(
edit
)
Module:Arguments
(
edit
)
Module:Effective protection level
(
edit
)
Module:High-use
(
edit
)
Module:If empty
(
edit
)
Module:List
(
edit
)
Module:Lua banner
(
edit
)
Module:Message box
(
edit
)
Module:Message box/configuration
(
edit
)
Module:Message box/ombox.css
(
edit
)
Module:String
(
edit
)
Module:TableTools
(
edit
)
Module:Template link general
(
edit
)
Module:Text
(
edit
)
Module:Text/data
(
edit
)
Module:Transclusion count
(
edit
)
Module:Transclusion count/data/I
(
edit
)
Module:Yesno
(
edit
)
Search
Search
Editing
Template:If empty/doc
Add topic