Re: [SMARTY-DEV] Incorrect newline counters
| From: | Monte Ohrt | Date: | Tue, 01 Jun 2004 21:59:09 +0000 |
| Subject: | Re: [SMARTY-DEV] Incorrect newline counters | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.smarty.dev |
| Request: | Send a blank email to php-smarty-dev+get-2365@lists.php.net to get a copy of this message | ||
I think (someone correct me if this isn't right) custom functions must produce their own newlines if they need them.
Dmitry Koteroff wrote:
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?