Re[2]: [SMARTY-DEV] Incorrect newline counters

From: Date: Tue, 01 Jun 2004 21:56:19 +0000
Subject: Re[2]: [SMARTY-DEV] Incorrect newline counters
References: 1 2 3 4 5 6 7 8  Groups: php.smarty.dev 
Request: Send a blank email to php-smarty-dev+get-2364@lists.php.net to get a copy of this message
MO> I think this rule works: If a tag produces no output, then no MO> newline should be produced by it. Good concept. But HOW to determine which function is "pure" and which - is not? It also touches user-defined functions (!), of course (for built-in we can point it manually, it's not interesting). Maybe if function returns NULL (of ralse) it may be considered as pure? NULL is returning at run-time, but we have to detect if we need \n at COMPILE-time. Maybe simply displace this functionality to runtime? MO> examples: MO> {$foo} MO> {$foo2} MO> {$foo3} MO> The above vars should make newlines in the resulting template since they MO> have output (even if it's empty). MO> {assign var="foo" value="bar"} MO> {assign var="foo2" value="bar2"} MO> {assign var="foo3" value="bar3"} MO> {if ...} MO> {/if} MO> {include ...} MO> The above functions should NOT make newlines in the resulting template, MO> there is no output. They are purely functional. MO> Dmitry Koteroff wrote: >>MO> I'd say in theory, any function on a line **by itself** that does not >>MO> produce output directly should not create a line in the output. So, #2 >>MO> would probably be the expected output. Similar example: >>MO> {if $foo} >>MO> bar >>MO> {/if} >>MO> should output: >>MO> bar\n >>MO> and not: >>MO> \nbar\n\n >>Stop. It is identical to PHP's behaviour: >> >><?if (...) {?> >>bar >><?}?> >> >>Result is "bar\n". >> >>But you had said before that newlines MUST not be ignored after >>{...} constructions! >> >>Can you explain this? Maybe newlines must be always deleted after >>block-tags, but not after function-tag? >> >>Can you explain the FULL behavour of different tags? -- Best regards, Dmitry Koteroff.

« previous php.smarty.dev (#2364) next »