/**
* handle partial
*
* @param array<string,array|string|integer> $context current compile context
* @param array<boolean|integer|string|array> $vars parsed arguments list
*
* @return string Return compiled code segment for the partial
*/
public static function partial(&$context, $vars)
{
// mustache spec: ignore missing partial
if ($context['usedFeature']['dynpartial'] === 0 && $context['usedFeature']['inlpartial'] === 0 && !isset($context['usedPartial'][$vars[0][0]])) {
return $context['ops']['seperator'];
}
Parser::getBlockParams($vars);
$p = array_shift($vars);
if ($context['flags']['runpart']) {
if (!isset($vars[0])) {
$vars[0] = $context['flags']['partnc'] ? array(0, 'null') : array();
}
$v = static::getVariableNames($context, $vars);
$tag = ">{$p['0']} " . implode(' ', $v[1]);
if (Parser::isSubExp($p)) {
list($p) = static::compileSubExpression($context, $p[1]);
} else {
$p = "'{$p['0']}'";
}
$sp = $context['tokens']['partialind'] ? ", '{$context['tokens']['partialind']}'" : '';
return $context['ops']['seperator'] . static::getFuncName($context, 'p', $tag) . "\$cx, {$p}, {$v['0']}{$sp}){$context['ops']['seperator']}";
}
return "{$context['ops']['seperator']}'" . Partial::compileStatic($context, $p[0]) . "'{$context['ops']['seperator']}";
}