implement Link class

This commit is contained in:
yggverse 2024-06-23 18:39:36 +03:00
parent a4e9b6fffa
commit 3758abe8ab

122
src/Link.php Normal file
View file

@ -0,0 +1,122 @@
<?php
declare(strict_types=1);
namespace Yggverse\Gemtext;
class Link
{
private string $_address;
private ?string $_alt;
private ?string $_date;
public function __construct(
string $address,
?string $alt = null,
?string $date = null
) {
$this->setAddress(
$address
);
$this->setAlt(
$alt
);
$this->setDate(
$date
);
}
public function setAddress(
string $address
): void
{
$address = trim(
$address
);
if (empty($address))
{
throw new \Exception(
_('Address required')
);
}
$this->_address = $address;
}
public function getAddress(): string
{
return $this->_address;
}
public function setAlt(
?string $alt
): void
{
if ($alt)
{
$alt = trim(
$alt
);
}
$this->_alt = $alt;
}
public function getAlt(): ?string
{
return $this->_alt;
}
public function setDate(
?string $date
): void
{
if ($date)
{
$date = trim(
$date
);
if (!preg_match('/^\d{4}-\d{2}-\d{2}$/'))
{
throw new \Exception(
_('Date does not match format YYYY-MM-DD')
);
}
}
$this->_date = $date;
}
public function getDate(): ?string
{
return $this->_date;
}
public function toString(): string
{
$parts = [
'=>',
$this->getAddress()
];
if ($date = $this->getDate())
{
$parts[] = $date;
}
if ($alt = $this->getAlt())
{
$parts[] = $alt;
}
return implode(
' ',
$parts
);
}
}