Determines whether the current asset is a duplicate.
De-duplication is performed based on either strict equality or by matching sources.
Boolean Returns true if we have not seen this asset yet
public function accept() {
$asset = $this
->getInnerIterator()
->current(true);
$duplicate = false;
// check strict equality
if (in_array($asset, $this->visited, true)) {
$duplicate = true;
}
else {
$this->visited[] = $asset;
}
// check source
$sourceRoot = $asset
->getSourceRoot();
$sourcePath = $asset
->getSourcePath();
if ($sourceRoot && $sourcePath) {
$source = $sourceRoot . '/' . $sourcePath;
if (in_array($source, $this->sources)) {
$duplicate = true;
}
else {
$this->sources[] = $source;
}
}
return !$duplicate;
}