protected function processTwig($template, \CLosure $processor)
{
$offset = 0;
while (preg_match($this->regexes['twig_start'], $template, $matches, PREG_OFFSET_CAPTURE, $offset)) {
$twig = '';
$buffer = $matches[0][0];
$from = $matches[0][1];
$offset = $from + strlen($buffer);
$pattern = $this->regexes['twig_inner_' . $buffer];
while (preg_match($pattern, $template, $inners, PREG_OFFSET_CAPTURE, $offset)) {
$buffer .= $inners[0][0];
$offset += strlen($inners[0][0]);
if (isset($inners[2])) {
$twig = $buffer;
break;
}
}
if (!$twig) {
continue;
}
$replacement = $processor($twig, $template, $from);
$template = substr_replace($template, $replacement, $from, $offset - $from);
$offset = $from + strlen($replacement);
}
return $template;
}