jak vypnout šablonování pro jeden řádek s Regulárním výrazem?

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

v regulárním výrazu potřebuju občas použít např. {4} ale šablona mi to přebere jako marko a vyhlásí chybu :
InvalidStateException Filter CurlyBracketsFilter::invoke: Unknown macro '{4}'. (in file...
takže jak vypnout na ten jeden řádek šablonovací systém?

jasir
Člen | 746
+
0
-

Pokud vím, snadno to nejde. Diskutovalo se tady o makru {literal}, ale zatím není rozhodnuto.
Snad v těch regulárech nezávisí na mezerách mezi { a }, takže to zkus zapsat takto { 4} (mezera za otvírací závorkou způsobí, že ji CurlyBracketsFilter „neuvidí“. Předpokládám, že ten regulár je v JavaScriptu a tam dávat za tyto závorky mezeru. Stejně se to řeší v CSS.

Ondřej Mirtes
Člen | 1536
+
0
-

Případně dej JS a CSS do externího souboru, to je stejně nejčistší.

fstorm
Člen | 4
+
0
-

FUNGUJÍCÍ způsob : "{" + "4}" a je to :-)
jde o javascript a potřebuju ho mít tam, kde to šablona prohledává (vytvářím tam link), pokud jsem tam dal { 4}, tak mi to javascript nepoznal, tak jsem to obešel přes

<script>
re = new RegExp ( ".... {" + "4}...." ) ;
</script>

ale díky, pomohlo mi to se nad tím zamyslet z jiného pohledu

Editoval fstorm (26. 7. 2009 20:25)

Dragonn
Člen | 12
+
0
-

Já bych to vyřešil tak, že bych daný řádek vypsal taky makrem: {!=‚…{4}…‘}

Osobně mi to přijde nejpřehlednější, akorát tu vzniká problém s escapováním apostrofů/uvozovek v reguláku

stpnkcrk
Generous Backer | 189
+
0
-

Zkuste

{syntax off}
{4}
{/syntax}
Honza Marek
Člen | 1664
+
0
-

Asi se to pak nevypne, když bude vypnutá syntax.

Podrobnosti o tomhle způsobu tu: https://forum.nette.org/…-js-promenna?…

ales.kafka
Člen | 34
+
0
-

Podobné problémy jsem měl taky. Literál je popravdě nepoužitelný, už to tu i několikrát bylo zdůvodněné. Na to mě napadlo, že by se dalo udělat nové jednotuché makro, např. {:expression} které by do konečného html kódu vracelo {expression}

Co vy na takové šibalské řešení?