public function loadFile(string $name): ?string
{
start_measure('icons','Time for loadFile');
$prefix = Str::beforeLast($name, '.');
$name = Str::afterLast($name, '.') . '.svg';
$icons = $this->finder
->ignoreUnreadableDirs()
->followLinks()
->in(
$this->directories->get($prefix, $this->directories->toArray())
)
->files()
->name($name);
/** @var PathFilterIterator $iterator */
start_measure('icons-tap','Time for tap');
$iterator = tap($icons->getIterator())
->rewind();
stop_measure('icons-tap');
/** @var SplFileInfo|null $file */
$file = collect($iterator)
->filter(static function (SplFileInfo $file) use ($name) {
return $file->getFilename() === $name;
})->first();
stop_measure('icons');
return optional($file)->getContents();
}