Latte: Další parametry blokových maker

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

Ahoj,

je nějaká cesta jak předat další parametry blokovým makrům? Například:

...
{_}This is a very long English paragraph which
needs to be translated to your native language.
The purpose of it being so long is to give
a good example of what a long paragraph of text
looks like. And also, we'd like to show you
this link: <a href="//%s">%s</a>{/_'en.wikipedia.com', 'English Wikipedia!'}
...

Tenhle konkrétní příklad s překladačem je přesně to co momentálně řeším; ano, asi by v tomto případě bylo čistší rozbít překládaný text na víc volání podtržítkových překládacích maker, ale to prostě nejde. Nejde mi o to „sprintf-like“ nahrazování placeholderů ve stringu, jde mi o překlad toho bloku Latte kódu na:

...
<?php ob_start(); ?>
This is a very long English paragraph ...
	...</a>
<?php echo $template->translate(ob_get_clean(), 'en.wikipedia.com', 'English Wikipedia!') ?>
...

dík předem :o) četl jsem si docela dost zdrojáky vestavěnejch Nette MacroSetů a prostě jsem to z toho nevykoukal…

danik
Člen | 56
+
0
-

Ještě doplním: čtením zdrojáků jsem odvodil něco takového:

public function macroTranslate(MacroNode $node, PhpWriter $writer)
    {
        if ($node->closing) {
            return $writer->write('echo %modify($template->translate(ob_get_clean(), %node.args))');

        } elseif ($node->isEmpty = ($node->args !== '')) {
            return $writer->write('echo %modify($template->translate(%node.args))');

        } else {
            return 'ob_start()';
        }
    }

což je až na přidané „%node.args“ na čtvrtém řádku úplně stejné, jako původní makro translate z CoreMacros. To by nejspíš fungovalo splendidně, kdyby ovšem všechny volání překládacího makra měly nějaké parametry, což se ale přirozeně stát nemusí. Takže vlastně to o co mi jde je nějaká dokumentace MacroNode a PhpWriteru, abych je mohl správně použít a vyřešit s jejich pomocí například tento problém :o)

Editoval danik (8. 4. 2013 14:04)