mirror of
https://github.com/YGGverse/gemtext-php.git
synced 2026-03-31 17:55:38 +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