reviewer-1.2.x-dev/src/Reviewer/Status/StatusFactory.php
src/Reviewer/Status/StatusFactory.php
<?php
declare(strict_types=1);
namespace Drupal\reviewer\Reviewer\Status;
use Drupal\reviewer\Reviewer\Result\ResultInterface;
/**
* Creates statuses.
*/
final readonly class StatusFactory implements StatusFactoryInterface {
/**
* {@inheritdoc}
*/
public function createIgnored(Status $status): Status {
return match ($status) {
Status::Fail => Status::IgnoredFailure,
Status::Error => Status::IgnoredError,
default => $status,
};
}
/**
* {@inheritdoc}
*/
public function createUnignored(Status $status): Status {
return match ($status) {
Status::IgnoredFailure => Status::Fail,
Status::IgnoredError => Status::Error,
default => $status,
};
}
/**
* {@inheritdoc}
*/
public function createFromBool(bool $bool): Status {
return $bool ? Status::Pass : Status::Fail;
}
/**
* {@inheritdoc}
*/
public function createMostSevere(array $results): Status {
if (!$results) {
return Status::NotRun;
}
$backing_values = array_map(
fn(ResultInterface $result) => $result->getStatus()->value,
$results,
);
return Status::from(max($backing_values));
}
}
