1
0
mirror of https://github.com/erusev/parsedown.git synced 2023-08-10 21:13:06 +03:00
parsedown/src/Configurables/DefinitionBook.php

56 lines
1009 B
PHP
Raw Normal View History

<?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);
}
}