FluentDOM\Query::wrapNodes PHP Method

wrapNodes() private method

Wrap $content around a set of elements
private wrapNodes ( array $elements, string | array | DOMNode | Traversable | callable $content ) : Query
$elements array
$content string | array | DOMNode | Traversable | callable
return Query
    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;
    }