Template:Ifnotempty

From EVE RP Wiki
Revision as of 11:54, 27 July 2010 by rp>Patrick
Jump to: navigation, search
Documentation

Script error: No such module "Template translation". With this template #if can be used in a way such that it does not strip spaces and newlines from the "then" and "else" part. For evaluating the condition spaces and newlines are stripped like with ParserFunctions.

Usage

  • {{ifnotempty|x| p | q }} gives " p "
  • {{ifnotempty|| p | q }} gives " q "

Compare:

  • {{#if:x| p | q }} gives "p"

Note that, unlike parser functions, templates require writing equals signs in values of unnamed parameters as {{=}}

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.

Expansion depth limit

7 levels allowed:

{{if||x|{{if||x|{{if||x|{{if||x|{{if||x|{{if||x|{{if||x|a}}}}}}}}}}}}}} gives Template:If

{{if||x|{{if||x|{{if||x|{{if||x|{{if||x|{{if||x|{{if||x|{{if||x|a}}}}}}}}}}}}}}}} gives Template:If

{{if||||{{if||||{{if||||{{if||||{{if||||{{if||||{{if||||a}}}}}}}}}}}}}} gives Template:If

{{if||||{{if||||{{if||||{{if||||{{if||||{{if||||{{if||||{{if||||a}}}}}}}}}}}}}}}} gives Template:If

{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|a}}}}}}}}}}}}}} gives Template:If

{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|{{if|expr|1|a}}}}}}}}}}}}}}}} gives Template:If

To allow more levels there is a separate Template:Ifexpr.

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, only in the case of #ifexpr, 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 {{{2}}}. Templates p1 and p2 ignore {{{2}}}; template if/errmsg is only called in the case of #ifexpr, in the case of a wrong expression {{{2}}}; it ignores p and q and uses {{{2}}} for display in the error message.

Conditions

#if:

Condition: string not empty.

See also