Změna syntaxe Latte šablon

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

Zdravím, chtěl bych se zeptat, zda se dá upravit syntaxe n: maker podobně jako santaxe „normálních“ maker pomocí {syntax ‚mode‘}, třeba tak, že bych n: změnil třeba na m:, protože je hodně často používám a přepisovat to všechno na „normální“ makra by zabralo dost času.

Díky.

Majkl578
Moderator | 1364
+
0
-

Ne, je definován konstantou.

Jan Tvrdík
Nette guru | 2595
+
0
-

@Mysteria: Co máš za problém s tím prefixem n:? Je to s něčím kolizní?

Mysteria
Člen | 797
+
0
-

@Majkl578: Díky.
@Jan Tvrdík: Problém je to v případě, že potřebuju nechat generovat Latte šablonu Lattem. V případě normálních maker si prostě přepnu syntaxi na double, zpracuje se to co potřebuju a výsledkem je funkční šablona s normální latte syntaxí. Problém nastává u šablon, kde mám i n: makra, protože ty se mi pak zkoušejí zpracovávat při prvním průchodu… proto jsem chtěl to přepnout třeba na m:, pak by se při prvním průchodu nechali n: být a přitom výsledný Latte by fungovalo (snad je to pochopitelný).

greeny
Člen | 405
+
0
-

Co takhle

{var $prefix = 'n:'}

<a {$prefix}href="{$link->href}">{$link->text}</a>
Mysteria
Člen | 797
+
0
-

@greeny: Ano, zrovna přesně takhle jsem to doimplementoval. Každopádně je ten kód míň přehlednej. Kdyby dobudoucna byla možnost si měnit i prefix n: maker, bylo by to určitě fajn.

Jo a ještě pro úplnost, je potřeba to vypisovat jako {{$prefix|noescape}} jinak to přidává uvozovky. :)

Editoval Mysteria (15. 3. 2014 23:57)

mkoubik
Člen | 728
+
0
-

Nebo si zaregistruj template filter, který ti nahradí něco jako /\sm:([a-zA-Z\-]+)\=/ za n:$1=.

Mysteria
Člen | 797
+
0
-

Zdravím, dovoluji si navázat na mé starší téma. Když jsem problém vyřešil poděděním Latte parseru, je potřeba se v komentáři nějak zmínit o Nette, aby to bylo v pořádku co se týká licencí a všeho možného, nebo stačí prostě jenom takhle?

<?php namespace Utils;
class CustomParser extends \Latte\Parser {
	const N_PREFIX = 'm:';
}

Díky. :)

Majkl578
Moderator | 1364
+
0
-

Akorát ti kvůli tomu přestanou fungovat případné doplňky používající n: makra. Navíc překrývat konstanty je fuj.


(Tak si říkám, když se Latte osamostatnilo, prefix by měl být spíš l:.)