/**
* Compile template into PHP code
*
* @param array<string,array|string|integer> $context Current context
* @param string $template handlebars template
*
* @return string|null generated PHP code
*/
public static function compileTemplate(&$context, $template)
{
array_unshift($context['parsed'], array());
Validator::verify($context, $template);
if (count($context['error'])) {
return;
}
// Do PHP code generation.
Parser::setDelimiter($context);
// Handle dynamic partials
Partial::handleDynamic($context);
$code = '';
foreach ($context['parsed'][0] as $info) {
if (is_array($info)) {
$context['tokens']['current']++;
$tmpl = static::compileToken($context, $info);
if ($tmpl == $context['ops']['seperator']) {
$tmpl = '';
} else {
$tmpl = "'{$tmpl}'";
}
$code .= $tmpl;
} else {
$code .= $info;
}
}
static::$lastParsed = array_shift($context['parsed']);
return $code;
}