Documentation
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"
Internal technical details
For evaluating the condition the template uses the actual parser function; however, not directly with p and q, because this strips spaces and newlines from the result, but with index values 1 and 2. The result can be 1, 2. The template with the applicable name is called (Template:P1 or Template:P2), with as parameters p and q.
See also
[[[Category:If-then-else templates]]