public function format($name, array $data)
{
if (!isset($this->_compiled[$name])) {
return '';
}
list($template, $placeholders) = $this->_compiled[$name];
/* If there is a {{attrs.class}} block in $template, remove classes from $data['attrs']
and put them in $data['attrs.class']. */
if (isset($data['attrs'])) {
foreach ($placeholders as $placeholder) {
if (substr($placeholder, 0, 6) == 'attrs.' && in_array('attrs.' . substr($placeholder, 6), $placeholders) && preg_match('#' . substr($placeholder, 6) . '="([^"]+)"#', $data['attrs'], $matches) > 0) {
$data['attrs'] = preg_replace('#' . substr($placeholder, 6) . '="[^"]+"#', '', $data['attrs']);
$data[$placeholder] = ' ' . trim($matches[1]);
}
}
$data['attrs'] = ' ' . trim($data['attrs']);
}
if ($template === null) {
return '';
}
if (isset($data['templateVars'])) {
$data += $data['templateVars'];
unset($data['templateVars']);
}
$replace = [];
foreach ($placeholders as $placeholder) {
$replacement = isset($data[$placeholder]) ? $data[$placeholder] : null;
if (is_array($replacement)) {
$replacement = implode('', $replacement);
}
$replace[] = $replacement;
}
return vsprintf($template, $replace);
}