Vlastne makra – parameter dvojakeho typu

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

mam taketo makro

<?php
    /**
	 * {ifEnabled ...}
	 */
	public function macroIfEnabled(MacroNode $node, PhpWriter $writer)
	{
		if ($node->data->capture = ($node->args === '')) {
			return 'ob_start()';
		}
		if ($node->prefix === $node::PREFIX_TAG) {
			return $writer->write($node->htmlNode->closing ? 'if (array_pop($_l->ifs)) {' : 'if ($_l->ifs[] = (%node.args)) {');
		}
		return $writer->write('if ($template->enabled(%node.word, %node.array?)) {');
	}
?>

pouziva sa asi takto

<?php
<span n:ifEnabled="invoice.labels.supplier country => 'SK'">
?>

co pekne vygeneruje

<?php
if ($template->enabled('invoice.labels.client', array('country' => 'SK')
?>

chcel by som pridat podporu arrayov ako argument makra, priklad

<?php
{var $context = ['country' => 'SK']}
<span n:ifEnabled="invoice.labels.supplier $context">
?>

toto samozrejme vygeneruje zly kod

<?php
if ($template->enabled('invoice.labels.client', array(array('country' => 'SK'))
?>

ako upravit tento riadok, aby fungovali oba typy zapisu?

<?php
return $writer->write('if ($template->enabled(%node.word, %node.array?)) {');
?>
greeny
Člen | 405
+
0
-

Já bych to řešil až ve funkci enabled, pokud dostanu pole v poli, tak si to pole vytáhnu :)

Oli
Člen | 1215
+
0
-

Expand to neresi?

bazo
Člen | 620
+
0
-

@greeny: funkcia enabled nie je sucast rozsirenia. to len integruje druhu kniznicu, pride mi to nespravne davat tuto logiku to enabled() kedze aj pole ako hodnota moze byt spravny argument

@oli expand ani nepoznam, asi by to pomohlo, ale chcem to vyriesit na urovni makra

len tie makro magic funkcie nie su nikde zdokumentovane