mirror of
https://github.com/erusev/parsedown.git
synced 2023-08-10 21:13:06 +03:00
56 lines
1009 B
PHP
56 lines
1009 B
PHP
<?php
|
|
|
|
namespace Erusev\Parsedown\Configurables;
|
|
|
|
use Erusev\Parsedown\MutableConfigurable;
|
|
|
|
/**
|
|
* @psalm-type _Data=array{url: string, title: string|null}
|
|
*/
|
|
final class DefinitionBook implements MutableConfigurable
|
|
{
|
|
/** @var array<string, _Data> */
|
|
private $book;
|
|
|
|
/**
|
|
* @param array<string, _Data> $book
|
|
*/
|
|
public function __construct(array $book = [])
|
|
{
|
|
$this->book = $book;
|
|
}
|
|
|
|
/** @return self */
|
|
public static function initial()
|
|
{
|
|
return new self;
|
|
}
|
|
|
|
/**
|
|
* @param string $id
|
|
* @param _Data $data
|
|
*/
|
|
public function mutatingSet($id, array $data): void
|
|
{
|
|
$this->book[$id] = $data;
|
|
}
|
|
|
|
/**
|
|
* @param string $id
|
|
* @return _Data|null
|
|
*/
|
|
public function lookup($id)
|
|
{
|
|
if (isset($this->book[$id])) {
|
|
return $this->book[$id];
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public function isolatedCopy(): self
|
|
{
|
|
return new self($this->book);
|
|
}
|
|
}
|