2019-01-20 05:21:20 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Erusev\Parsedown\Configurables;
|
|
|
|
|
|
|
|
use Erusev\Parsedown\Configurable;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @psalm-type _Data=array{url: string, title: string|null}
|
|
|
|
*/
|
|
|
|
final class DefinitionBook implements Configurable
|
|
|
|
{
|
|
|
|
/** @var array<string, _Data> */
|
|
|
|
private $book;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param array<string, _Data> $book
|
|
|
|
*/
|
|
|
|
public function __construct(array $book = [])
|
|
|
|
{
|
|
|
|
$this->book = $book;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** @return self */
|
2019-01-20 17:56:05 +03:00
|
|
|
public static function initial()
|
2019-01-20 05:21:20 +03:00
|
|
|
{
|
|
|
|
return new self;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param string $id
|
|
|
|
* @param _Data $data
|
|
|
|
* @return self
|
|
|
|
*/
|
|
|
|
public function setting($id, array $data)
|
|
|
|
{
|
|
|
|
$book = $this->book;
|
|
|
|
$book[$id] = $data;
|
|
|
|
|
|
|
|
return new self($book);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param string $id
|
|
|
|
* @return _Data|null
|
|
|
|
*/
|
|
|
|
public function lookup($id)
|
|
|
|
{
|
|
|
|
if (isset($this->book[$id])) {
|
|
|
|
return $this->book[$id];
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|