Jak získat cestu k šabloně z které bylo makro voláno?

jEhLa
Člen | 70
+
0
-

Dobrý den,
prosím o radu. Potřeboval bych v definici makra nějak zjistit cestu přesně k souboru v kterém bylo makro voláno.
Je to nějak možné?

Potřebuji nad předanou hodnoutou ($destination) provést úpravu, dle toho kde se původní šablona nachází.
Nechci to runtime, ale jen při kompilaci.
Ale potřebuji vždy přesný soubor, pokud bylo makro použito v layoutu, potřebuji cestu k layoutu a né až konečné šabloně presenteru.

class Macros extends MacroSet
{
	public static function install( Compiler $compiler): void
	{
		$me = new static($compiler);
		$me->addMacro('myInclude', [$me, 'macroMyInclude']);
	}

	public function macroMyInclude( MacroNode $node, PhpWriter $writer )
	{
		$destination = $node->tokenizer->fetchWord();
		//zde bych potřeboval nějak získat cestu k souboru šablony,
		//odkud bylo makro voláno, nejlépe absolutní
	}
}

Editoval jEhLa (15. 11. 2020 7:02)

David Grudl
Nette Core | 8218
+
0
-

Napadá mě jen z debug_backtrace

jEhLa
Člen | 70
+
0
-

David Grudl napsal(a):

Napadá mě jen z debug_backtrace

Děkuji za radu, ale tím to mám právě momentálně řešené, že si v tom najdu první Latte\Engine, s metodou compile a převezmu první argument.
Ale nepřijde mi to moc bezpečné na toto spoléhat. Proto přemýšlím nad jiným způsobem.

Editoval jEhLa (15. 11. 2020 17:53)