Nekonzistentní chování {expression} a {!expression}

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kukulich
Člen | 58
+
0
-

V poslední verzi na githubu existuje nekonzistence v chování {expression}{!expression}

Funguje:

{!'<br>'|repeat:2}

Výstup:

<br><br>

Nefunguje:

{'-'|repeat:2}

Výstup:

{'-'|repeat:2}

Donedávna ještě nefungovala ani první varianta. Ta zřejmě začala fungovat po přepsání Latte. Otázkou je jestli omylem nebo schválně. Podle https://latte.nette.org/cs/tags#… asi spíš omylem. Osobně se mi tohle fungování ale líbí, takže bych se spíš přimlouval, aby fungovalo i pro {expression}.

Mikulas Dite
Člen | 756
+
0
-

A tam být spíš {='-'|repeat:2}?

kukulich
Člen | 58
+
0
-

Mikulas Dite napsal(a):

A tam být spíš {='-'|repeat:2}?

Tohle sice funguje, ale podle nové dokumentace to neexistuje https://latte.nette.org/cs/tags. Proto to považuji spíš za deprecated feature.

Mikulas Dite
Člen | 756
+
0
-

Imho je to chyba, na masteru je to teď takhle: https://api.nette.org/…eMacros.html

...
{$variable} with escaping
{!$variable} without escaping
{=expression} echo with escaping
{!=expression} echo without escaping
...

Edit: samozřejmě myslím chybu dokumentace

Editoval Mikulas Dite (11. 6. 2011 0:00)

jtousek
Člen | 951
+
0
-

To vypadá spíše na chybu dokumentace než bug. David se už zmiňoval, že v té dokumentaci jsou chybky a že bude ještě nahrávat novější verzi.

kukulich
Člen | 58
+
0
-

Na dokumentaci v kódu jsem se nechtěl spoléhat, protože tady https://api.nette.org/…ros.php.html#22 je třeba mnohem méně maker, než daná třída instaluje.

Prostě asi bude muset říct David, co je správně.

Podobně třeba makro {var}.

V kódu {var var => value} https://api.nette.org/…ros.php.html#37

V dokumentaci {var var = value} https://latte.nette.org/cs/tags#…

Podle kódu https://api.nette.org/…ros.php.html#320 sice funguje obojí, ale momentálně prostě nevím, jestli jedna syntaxe je preferovaná a druhá deprecated, nebo jsou obě podporované a pak by také obě měly být zmíněné v dokumentaci.

David Grudl
Nette Core | 8142
+
0
-

Kvůli kombinování JavaScriptu s Latte se záměrně {' ignoruje, v tomto případě je lepší uvést {=expression}