Ako dostat premennu do macra ako parameter?

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

Caute robim si macro do ktoreho chcem poslat absolutnu cestu k suboru. Ale problem je to ked dam ako parameter macra premennu tak do macra nedostanem hodnotu premennej, ale string $path. Neviete ako sa to riesi?

{var $path = 'D:\htdocs\dir\.........\file.png'}
{file $path, 'param1'}


public static function install(Compiler $parser)
	{
		$me = new static($parser);
		$me->addMacro('file', function (MacroNode $node, PhpWriter $writer) use ($me) {
			return $me->macroSrc($node, $writer);
		}, NULL, function(MacroNode $node, PhpWriter $writer) use ($me) {
			return ' ?> file="<?php ' . $me->macroFile($node, $writer) . ' ?>"<?php ';
		});
	}

	public function macroFile(MacroNode $node, PhpWriter $writer)
	{
		$node->args; // dostanem $path (ako string, nie jeho hodnotu), 'param1'
		return .....
	}
David Matějka
Moderator | 6445
+
0
-

tenhle kod se totiz vola pri kompilaci a hodnota tak neni znama. ukolem toho makra je vygenerovat php kod, ktery pak v runtime bude pracovat s predanou hodnotou.

Oli
Člen | 1215
+
0
-

Znám to jenom takhle:

$me->addMacro('picture', 'echo %modify(Akkon\Macro::prepareArguments([%node.args], $_presenter))');

// ...

public static function prepareArguments(array $arguments, Presenter $presenter) {}
duskohu
Člen | 778
+
0
-

Jasne chapem, po uprave a dumpovanie dat az po kompilaci to funguje ako ma.
Dakujem pani :-)