Nette 2.1 vlastní makro → převod na římská čásla

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

Zdravim.

Kde bych měl začít studovat podklady pro to abych napsal vlastní makro v Nette 2.1 pro převod čísla na římské?

Algoritmus převodu mám vymyšlený. Jen nevím jak ho zakomponovat do Nette.

Děkuji za rady

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

Nehodí se na to spíš helper?

$this->template->registerHelper('roman', function ($number) {
	// algorithm
	return $romanNumber;
});

Tento kód je nejlepší nacpat do presenteru (případně do komponent, které by helperem měly také disponovat).

protected function createTemplate($class = NULL)
{
	$template = parent::createTemplate($class);
	$template->registerHelper('roman', ...);
	return $template;
}

A použití v šabloně:

{115|roman} {* => "CXV" *}

Editoval vojtech.dobes (30. 8. 2013 23:15)

Myiyk
Člen | 321
+
0
-

Docela by se mi líbilo, kdyby tím disponovalo i samotné Nette, jako součást převádění v číselných soustavách.

{10|transfer:'hex'} {* A *}
{10|transfer:'bin'} {* 1010 *}
...
{10|transfer:'roman'} {* X *}

Není to sice nějak extra používaná věc, ale jako použití by si jistě našlo.

A když ne přímo v Nette, tak aspoň jako doplněk.

enumag
Člen | 2118
+
0
-

@Myiyk: Přímo v Nette je to myslím zbytečné, jako doplněk to smysl dává. Můžeš se toho chopit. ;-)

@motorcb: V tomhle případě určitě raději helper než makro. Jinak pro vlastní makra žádná použitelná dokumentace není (aspoň o ní nevím), tzn. nejjednodušší je podívat se na zdrojáky výchozích Latte maker, pochopit je a kopírovat.

motorcb
Člen | 552
+
0
-

@vojtech.dobes:

Díky a co bude místo těch … ???

$template->registerHelper('roman', ...);
grogy
Člen | 147
+
0
-

@motorcb
Mrkni na https://componette.org/search/?… – tam uvidíš na příkladu, co tam patří a celkově uvidíš, jak lze helper udělat.

@Myiyk
Souhlasím s @enumag, lepší to bude jako helper.

Edit:// tento odkaz je lepší – https://componette.org/search/?… (ukazuje, jak můžeš helper injectovat)

Editoval grogy (31. 8. 2013 10:18)

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

motorcb: Viz moje první ukázka kódu – anonymní funkce (nebo jakýkoliv platný callback), který bude obsahovat tvůj algoritmus a vrátí onu konvertovanou hodnotu (římské číslo).