Alternativní zápis komentářů v Latte

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

Občas se stane, že potřebuji zakomentovat nějaký kus kódu v šabloně, což se komplikuje, pokud tento kus kódu obsahuje Latte komentáře {* ... *}. Nejde pak pro tento účel jednoduše celý kus obalit těmito komentářovými tagy. Myslím, že by nebylo špatné, kdyby proto existoval i alternativní způsob zápisu komentářů pro tento účel. Napadá mě např. {*** ... ***}. Variantu se dvěma hvězdičkami záměrně nenavrhuji, neboť někdo může používat zápis:

{**
 * Komentář
 *}
pekelnik
Člen | 462
+
0
-

Kdyz uz jsme ale u toho nebylo by mozna od veci povolit v Latte „standardni“ nebo snad lepe receno „bezne“ druhy komentaru.

Latte

<div n:block="content">
	{*<a n:href="delete">Delete</a>*}
</div>

Shell

<div n:block="content">
#	<a n:href="delete">Delete</a>
</div>

PHP

<div n:block="content">
//	<a n:href="delete">Delete</a>
</div>
Vyhody:
  • je jasny o co jde
  • podpora pro uzivatele kteri jsou na takove komentare zvykli
  • jednodussi komentovani – komentare se nemusi ukoncovat

Je moznost kombinovat ruzne druhy komentaru resp. pribyly by dva nove druhy radkovych komentaru s tim ze stavajici blokovy komentar by zustal zachovan.

Editoval pekelnik (14. 5. 2012 21:55)

hAssassin
Člen | 293
+
0
-

nevim, ale podle me je to docela blbost, michat PHP komentare s Latte komentarema. A trochu nechapu vubec pointu toho prvniho prizpevku: jakoze aby bylo mozny zakomentovat kus kodu, ktery uz obsahuje komentar? jinymi slovy aby bylo mozny komenty do sebe vnorovat? Jo, to je sice hezky a obcas nadavam ze mi to chybi i jinde, ale jelikoz to prave jinde taky neni (PHP, HTML, Cecko, apod.) tak bych to taky moc nemichal.

Jo a co by se stalo kdybych mel komentar v komentari a chtel to cely zabalit do dalsiho komentare? Pak bych pouzil {**** ... ****}? Atd, cili bych mel casem treba 10 hvezdicek z kazdy strany?

jtousek
Člen | 951
+
0
-

@hAssassin: <nadsázka> Kdepak, potom bys psal {*10* … *10*}. ;-) </nadsázka>

Vzhledem k tomu že v HTML/CSS/JS/PHP nic takového není, nezaváděl bych to ani v Latte.

Pokud jde o PHP komentáře v šablonách tak do Latte bych to určitě nedával, ale pokud to chceš, myslím že by nebyl nijak velký problém napsat si na to vlastní filter a spouštět jej ještě před Latte.

Editoval jtousek (14. 5. 2012 21:57)

pekelnik
Člen | 462
+
0
-

hAssassin napsal(a):

… trochu nechapu vubec pointu toho prvniho prizpevku…

1 prispevek chapu – sam jsem to parkrat resil

a muj prispevek rika v podstate toto:

Radkove komentare se daji zanorovat lepe nez blokove ;)

Editoval pekelnik (14. 5. 2012 22:05)

pekelnik
Člen | 462
+
0
-

jtousek napsal(a):

Vzhledem k tomu že v HTML/CSS/JS/PHP nic takového není, nezaváděl bych to ani v Latte.

Radkove komentare nema z vyse zminenych pouze HTML ;) naprosta vetsina ostatnich jazyku je naopak podporuje…

Editoval pekelnik (14. 5. 2012 22:06)

redhead
Člen | 1313
+
0
-

Mnohem lepším řešením by asi bylo si vnitřně počítat zanoření oněch komentářů a „odkomentovat“ až u posledního *} (tj. bez žádných {*** ***})

hAssassin
Člen | 293
+
0
-

ano, radkove komentare mi v latte chybi, to sem v predchozim prizpevku zapomnel zminit. ale neopicil bych se po php ale radkovy komentar by mel vychazet z latte, cili neco jako {/ nebo {// do konce radku pokud by to bylo realizovatelny (bez uzaviraci zavorky) bych taky uvital.

Spis mi slo o to zanorovani komentaru, to by se dalo realne udelat tak, ze by proste kazdy oteviraci {* se pripocital a kazdy uzaviraci *} odpocital a dokud by ten citac nebyl nula, bylo by to povazovany za koment a ignorovalo se to, ale zavadet nejaky {*** ***} mi prijde blbost.

EDIT: redhead> ano, presne tak to myslim, ale byl sem pomalejsi…

Editoval hAssassin (14. 5. 2012 22:13)

duke
Člen | 650
+
0
-

Řádkové komentáře by toto částečně řešily. Dokážu si představit např.:

{//} řádkový komentář

Redheadovo řešení by asi také šlo použít, ale nevýhoda je v možné nepřehlednosti, pokud nepoužíváme nějaký lepší editor s dokonalým syntaktickým obarvovačem, který správně obarví celý komentář.
Mnou navrhované řešení zase není obecné (jak správně uvedl hAssassin). Obecnější by mohlo vypadat takto: {*XYZ ... XYZ*} kde XYZ je kvazi-libovolný řetězec.

Editoval duke (14. 5. 2012 23:23)

jtousek
Člen | 951
+
0
-

pekelnik napsal(a):

jtousek napsal(a):

Vzhledem k tomu že v HTML/CSS/JS/PHP nic takového není, nezaváděl bych to ani v Latte.

Radkove komentare nema z vyse zminenych pouze HTML ;) naprosta vetsina ostatnich jazyku je naopak podporuje…

To jsme se špatně pochopili, měl jsem na mysli ty „vynořené“ komentáře.

Pokud jde o řádkové tak na to jsem reagoval až potom – „napiš si vlastní filtr“.

pekelnik
Člen | 462
+
0
-

ad {// apod.:

Latte bylo jiz davno prejmenovano z CurlyBracketsFilter protoze proste curly brackets prerostlo a nyni obsahuje mnohe dalsi funkce jako n:makra atd.

Nevidim duvod bezne pouzivanou a zazitou syntax # comment... nebo // comment nejak kurlit… ;)

Editoval pekelnik (15. 5. 2012 4:25)

hAssassin
Člen | 293
+
0
-

pekelnik> to je sice pravda, ale tady je problem, ze latte je sablonovaci system primarne pro html a tam neni zadna syntaxe jako treba v php. takze kdyz v html napisu normalne // comment nemusi to nutne znamenat ze chci komentar ale treba jen fakt vypisuju tuhle sekvenci znaku. ja vim ze je to to sami jako pro {// comment (taky to je proste sekvence) ale ta uz jasne rika ze jde o neco co patri k latte prave diky {.

voda
Člen | 561
+
0
-

redhead napsal(a):

Mnohem lepším řešením by asi bylo si vnitřně počítat zanoření oněch komentářů a „odkomentovat“ až u posledního *} (tj. bez žádných {*** ***})

To se mi nelíbí, pak by nefungovalo

{**}Lorem ipsum{**}
{*}Lorem ipsum{**}
redhead
Člen | 1313
+
0
-

voda napsal:

Nechápu. Uveď lepší příklad, tady totiž onoho návrhu ani nevyužíváš, a obarvovač tady na fóru reaguje beze změny a správně. V tvém příkladě je zanořený komentář až na druhém řádku, avšak není správně ukončen, takže by správně měl zakomentovat od 2. řádku dál celý dokument.

V mém návrhu, například

{*
	{if true}
		{* foo *}
	{/if}
*}

zakomentuje celý obsah mezi 1. a 5. řádkem, protože uvnitř si počítá zanoření a komentář v ifu je správně zanořen (ukončen).

ad obarvovače: vaše smůla, máte používat NetBeans a náš plugin ;) :D

voda
Člen | 561
+
0
-

To právě nemají být zanořené komentáře, ale „přepínací“. Přidáním/odmazáním jednoho znaku (*) lze jednoduše za/od-komentovat. V ukázce je tedy ten samý řádek, jednou zakomentován, podruhé odkomentován. To by se zanořováním komentářů nešlo.

llook
Člen | 407
+
0
-

Jako alternativní zápis lze použít PHP:

<?php /*
Zakomentováno. {* foo *}
*/ ?>

Případně delší „přepínací“ varianta:

<?php /** ?>
Zakomentováno.
<?php /**/ ?>


<?php /**/ ?>
Odkomentováno.
<?php /**/ ?>
redhead
Člen | 1313
+
0
-

To jako vážně? Tohle někdo bude chtít psát?

pekelnik
Člen | 462
+
0
-

@redhead jak slozite by bylo implementovat funkcnost radkovych komentaru # comment... aby fungovalo v Netbeans Ctrl + /?

redhead
Člen | 1313
+
0
-

pekelnik napsal:

Nevím, ale API na to určitě bude. Nejde tak ani o implementaci v NetBeans pluginu, jako spíš dohodnout se na nějakém (normálním!) řešení.

pekelnik
Člen | 462
+
0
-

Takze si to shrneme:

Puvodni feature request navrhuje zavest dalsi typ blokovych komentaru {*** comment ***}.

S tim je potiz, protoze to neni univerzalni. Co kdyz budu chtit zakometovat po treti neco co uz obsahuje zakomentovane kusy kodu? Jsem tam kde jsem byl.


Ja navrhuji naopak implementovat radkove komentare.

At uz jako # comment nebo // comment.
Hlavni vyhodu radkovych komentaru oproti blokovym vidim v tom ze je lze libovolne „zanorovat“ – nikdy nenastane problem s (ne)ukoncenym komentarem. Take IDE maji vetsinou vestavenou podporu pro radkove komentare na vyssi urovni nez u tech blokovych. Videl jsem automatickou podporu blokovych komentaru, ale problem nastava pri odkomentovani. Na takovou vec (spravne znovu zakomentovani vnitrnich komentaru) by totiz byla potreba vestecka koule.


Ale v HTML nejsou! Ano je to tak! Latte komentare v HTML nejsou ;)

Ja chci zakomentovat kus latte sablony a ne HTML. Od toho mame HTML komentar <!-- comment -->

Editoval pekelnik (16. 5. 2012 12:39)

David Grudl
Nette Core | 8228
+
0
-

pekelnik napsal(a):

At uz jako # comment nebo // comment.

To by byl docela problém napsat do kódu URL https://nette.org/#features

hAssassin
Člen | 293
+
0
-

ja vedel ze s timhle navrhovanym bude nekde problem, presne jak jsem psal vyse (jen me tenhle trivialni pripad nenapad :-) jde o to ze treba v PHP jsou specialni konstrukce jako retezce v "" ale v HTML nic takovy neni a text lze psat prakticky kamkoliv. Proto by se mi spis libilo vyse navrhony {/ nebo {//.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Když se vrátím k těm úplně prvním příkladům, tak Latte určitý druh řádkového komentáře podporuje. Je to multifunkční, podporuje to zároveň i víceřádkové… ale funguje to jen s HTML elementy, na obyč text je to krátké.

<div n:block="content">
        <a n:if=0 n:href="delete">Delete</a>
</div>
Filip Procházka
Moderator | 4668
+
0
-

Za mě – jakékoliv řádkové komentáře v Latte jsou zbytečné. Ani HTML je nemá ;) (nevím o nich)

duke
Člen | 650
+
0
-

pekelnik napsal(a):

Takze si to shrneme:

Puvodni feature request navrhuje zavest dalsi typ blokovych komentaru {*** comment ***}.

S tim je potiz, protoze to neni univerzalni. Co kdyz budu chtit zakometovat po treti neco co uz obsahuje zakomentovane kusy kodu? Jsem tam kde jsem byl.

Na neuniverzálnost jsem již reagoval návrhem {*XYZ ... XYZ*} kde XYZ je kvazi-libovolný řetězec, na což zatím nikdo nereagoval. Podobné řešení se – jak jistě víte – používá v PHP u heredoc syntaxe pro zápis řetězců. V praxi by to pak mohlo vypadat např. takto:

{*popisek
	{*~~
		{*--
			Lorem Ipsum {* comment 1 *}
		--*}
	~~*}
popisek*}

A nějaké jednoduché přepínání, pokud by o to byl enormní zájem, by šlo také jistě vymyslet, např. pro to rezervovat nějaký symbol. Napadá mě vykřičník (který zároveň upozorňuje), tj. např.:

{*// zapnutý komentář //*}
{*//! vypnutý komentář //*}

Řádkové komentáře mi osobně zas až tak nechybí. Jde jen o to, že částečně řeší výše popsaný problém, takže pokud budou, je to lepší než nic.

Patrik Votoček
Člen | 2221
+
0
-

Za mě jde o zbytečnost. Pokud potřebuju zakomentovat něco co samo obsahuje komentář tak prostě u původního komentáře změním *} na * } a je po problému.

hrach
Člen | 1838
+
0
-

Souhlas s vrtakem