private function wrapNodes($elements, $content)
{
$result = array();
$wrapperTemplate = NULL;
$callback = Constraints::isCallable($content, FALSE, TRUE);
if (!$callback) {
$wrapperTemplate = $this->build()->getContentElement($content);
}
$simple = FALSE;
foreach ($elements as $index => $node) {
if ($callback) {
$wrapperTemplate = NULL;
$wrapContent = $callback($node, $index);
if (!empty($wrapContent)) {
$wrapperTemplate = $this->build()->getContentElement($wrapContent);
}
}
if ($wrapperTemplate instanceof \DOMElement) {
/**
* @var \DOMElement $target
* @var \DOMElement $wrapper
*/
list($target, $wrapper) = $this->build()->getWrapperNodes($wrapperTemplate, $simple);
if ($node->parentNode instanceof \DOMNode) {
$node->parentNode->insertBefore($wrapper, $node);
}
$target->appendChild($node);
$result[] = $node;
}
}
return $result;
}