Template documentation


This template allows branching without Extension:ParserFunctions.

It uses the code {{{3{{{1|}}}|{{{1{{{1|}}}|{{{2|}}}}}}}}}

Cases:

  • If {{{1}}} is defined and not empty, this reduces to {{{2|}}}
  • If {{{1}}} is defined and empty, this reduces to {{{3|}}}
  • If {{{1}}} is undefined, this reduces to {{{3|{{{2|}}}}}}

If the intention is to treat empty and undefined as equivalent, then:

If {{{1}}} is defined, we successfully avoid different results for {{{2}}} undefined or empty, and for {{{3}}} undefined or empty.

If {{{1}}} is undefined and {{{3}}} is defined, we successfully avoid different results for {{{2}}} undefined or empty.

If {{{1}}} and {{{3}}} are undefined, we successfully avoid different results for {{{2}}} undefined or empty.

If {{{1}}} is undefined and {{{2}}} is defined, we have {{{2}}} for {{{3}}} undefined, but empty for {{{3}}} empty. This is different if {{{2}}} is defined and not empty!

If {{{1}}} and {{{2}}} are undefined, we successfully avoid different results for {{{3}}} undefined or empty.

If {{{2}}} is defined and not empty and {{{3}}} is undefined, we get {{{2}}} if {{{1}}} is undefined, but empty if {{{1}}} is empty!

Summarizing: there is one deviating result: if {{{2}}} is defined and not empty, we get this value if {{{1}}} and {{{3}}} are both undefined, but not if one of both are empty.

With ParserFunctions we can use {{#if:{{{1|}}}|{{{2|}}}|{{{3|}}}}}.

Examples

edit
Code Result
{{ifwp|x|y|z}} y
{{ifwp||y|z}} z
{{ifwp|x||z}}
{{ifwp|x|y|}} y
{{ifwp|x||}}
{{ifwp||y|}}
{{ifwp|||z}} z
{{ifwp|||}}
{{ifwp|2=y|3=z}} z
{{ifwp|1=x|3=z}}
{{ifwp|x|y}} y
{{ifwp|2=|3=z}} z
{{ifwp|1=|3=z}} z
{{ifwp||y}}
{{ifwp|2=y|3=}}
{{ifwp|1=x|3=}}
{{ifwp|x|}}
{{ifwp|2=|3=}}
{{ifwp|1=|3=}}
{{ifwp||}}
{{ifwp|x}}
{{ifwp|2=y}} y
{{ifwp|3=z}} z
{{ifwp|}}
{{ifwp|2=}}
{{ifwp|3=}}
{{ifwp}}

See also

edit