.

Template:Ifexpr

Wikicars, a place to share your automotive knowledge
Jump to navigationJump to search
{{#if:defaultnotblank|
Documentation
}}
Error creating thumbnail: Unable to save thumbnail to destination
This is a documentation subpage for Ifexpr (see that page for the template or article itself).
It contains usage information, categories, interlanguage links and other content that is not part of the original page.

With this template #ifexpr can be used in a way such that it does not strip spaces and newlines from the "then" and "else" part.

Usage

  • {{ifexpr|2<3| p | q }} gives "{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:2<3|p1|p2}}|p1=p1|p2=p2|if/errmsg}}| p | q |2<3}}"
  • {{ifexpr|2>3| p | q }} gives "{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:2>3|p1|p2}}|p1=p1|p2=p2|if/errmsg}}| p | q |2>3}}"
  • {{ifexpr|2{{=}}3| p | q }} gives "{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:2Template:=3|p1|p2}}|p1=p1|p2=p2|if/errmsg}}| p | q |2Template:=3}}"
  • {{ifexpr||1=2=3| p | q }} gives "{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:2=3|p1|p2}}|p1=p1|p2=p2|if/errmsg}}| p | q |2=3}}"
  • {{ifexpr||1=7=7| ok true | no }} gives "{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:7=7|p1|p2}}|p1=p1|p2=p2|if/errmsg}}| ok true | no |7=7}}"
  • {{ifexpr||1=3*4<=10+1| ok| oh no}} gives "{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:3*4<=10+1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}| ok| oh no|3*4<=10+1}}"

Compare:

  • {{#ifexpr:2<3| p | q }} gives "{{#ifexpr:2<3| p | q }}"

Note that, unlike parser functions, templates require writing equals signs in values of unnamed parameters by using double-braces, as {{=}}. So, to allow "=" (or "<=" or ">=") then use the named parameter 1, as in: 1={{{x}}}>=7.

For full substitution, simply use Template:Cnw or Template:Cnw. If the condition contains a parser function, template, or variable, that should be substituted too. Optionally the "then" or "else" part can also be substituted.

Error messages (examples):

  • {{ifexpr|1234>e3|1|0}} gives {{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1234>e3|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|1|0|1234>e3}}
  • {{#ifexpr:1234>e3|1|0}} gives {{#ifexpr:1234>e3|1|0}}, for e3.
  • {{#ifexpr:1234>1e3|1|0}} gives {{#ifexpr:1234>1e3|1|0}}, because 1,234 > 1e3 (1,000).

Expansion depth limit

13 levels allowed:

{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|a}}}}}}}}}}}}}}}}}}}}}}}}}} gives {{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|a||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}

{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|{{ifexpr|1|a}}}}}}}}}}}}}}}}}}}}}}}}}}}} gives {{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|{{safesubst:{{safesubst:#switch:{{safesubst:#ifexpr:1|p1|p2}}|p1=p1|p2=p2|if/errmsg}}|a||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}||1}}

Internal technical details

For evaluating the condition the template uses the actual parser functions; however, not directly with p and q, because this strips spaces and newlines from them, but with index values 1 and 2. The result can be 1, 2, or an error message. Using a switch these are converted to p1, p2, and if/errmsg, respectively. The template with the applicable name is called (Template:P1, Template:P2, or Template:If/errmsg), with as parameters p, q, and {{{1}}}. Templates p1 and p2 ignore {{{1}}}; template if/errmsg is only called in the case of a wrong expression {{{1}}}; it ignores p and q and uses {{{1}}} for display in the error message.

See also

Template:Refs