Skip to content

Commit

Permalink
Merge 57df1b2 into 9663472
Browse files Browse the repository at this point in the history
  • Loading branch information
parisholley committed May 11, 2016
2 parents 9663472 + 57df1b2 commit 61d5f72
Showing 1 changed file with 22 additions and 7 deletions.
29 changes: 22 additions & 7 deletions src/PHPHtmlParser/Dom/InnerNode.php
Original file line number Diff line number Diff line change
Expand Up @@ -235,13 +235,28 @@ public function isChild($id)
*/
public function replaceChild($childId, AbstractNode $newChild)
{
$oldChild = $this->getChild($childId);
$keys = array_keys($this->children);
$index = array_search($childId, $keys, true);
$keys[$index] = $newChild->id();
$this->children = array_combine($keys, $this->children);
$this->children[$newChild->id()] = $newChild;
unset($oldChild);
$oldChild = $this->children[$childId];

$newChild->prev = $oldChild['prev'];
$newChild->next = $oldChild['next'];

$keys = array_keys($this->children);
$index = array_search($childId, $keys, true);
$keys[$index] = $newChild->id();
$this->children = array_combine($keys, $this->children);
$this->children[$newChild->id()] = array(
'prev' => $oldChild['prev'],
'node' => $newChild,
'next' => $oldChild['next']
);

if ($oldChild['prev'] && isset($this->children[$newChild->prev])) {
$this->children[$oldChild['prev']]['next'] = $newChild->id();
}

if ($oldChild['next'] && isset($this->children[$newChild->next])) {
$this->children[$oldChild['next']]['prev'] = $newChild->id();
}
}

/**
Expand Down

0 comments on commit 61d5f72

Please sign in to comment.