/**
* New node is found. Returns FALSE to reject.
*
* @param MacroNode $node
* @return bool
* @throws Latte\CompileException
*/
public function nodeOpened(MacroNode $node)
{
if ($node->prefix) {
return false;
}
if ($node->modifiers) {
throw new Latte\CompileException("Modifiers are not allowed in {{$node->name}}.");
}
$file = $node->tokenizer->fetchWord();
if ($file === false) {
throw new Latte\CompileException("Missing file name in {{$node->name}}.");
} elseif ($node->tokenizer->fetchWord()) {
throw new Latte\CompileException("Multiple arguments are not supported in {{$node->name}}.");
}
$node->isEmpty = true;
$node->modifiers = '|safeurl|escape';
// auto-escape
$writer = Latte\PhpWriter::using($node, $this->compiler);
if ($this->debugMode) {
$node->openingCode = $writer->write('<?php echo %modify(%1.word . \'?\' . Nepada\\BustCache\\Helpers::timestamp(%0.var . %1.word)) ?>', $this->wwwDir, $file);
} elseif (preg_match('#^(["\']?)[^$\'"]*\\1$#', $file)) {
// Static path
$file = trim($file, '"\'');
$url = $file . '?' . Helpers::hash($this->wwwDir . $file);
$url = Latte\Runtime\Filters::safeUrl($url);
$node->openingCode = $writer->write('<?php echo %escape(%var) ?>', $url);
} else {
$node->openingCode = $writer->write('<?php echo %modify(%1.word . \'?\' . Nepada\\BustCache\\Helpers::hash(%0.var . %1.word)) ?>', $this->wwwDir, $file);
}
}