mirror of
https://github.com/YGGverse/gemtext-php.git
synced 2026-03-31 09:45:33 +00:00
implement Link class
This commit is contained in:
parent
a4e9b6fffa
commit
3758abe8ab
1 changed files with 122 additions and 0 deletions
122
src/Link.php
Normal file
122
src/Link.php
Normal 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
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue