mirror of
https://github.com/YGGverse/gemtext-php.git
synced 2026-03-31 17:55:38 +00:00
create Entity namespace
This commit is contained in:
parent
c23877166c
commit
207f785d7f
3 changed files with 212 additions and 0 deletions
23
src/Entity/Code.php
Normal file
23
src/Entity/Code.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Yggverse\Gemtext\Entity;
|
||||
|
||||
class Code
|
||||
{
|
||||
/*
|
||||
* Helper method
|
||||
*
|
||||
* Detect line given is escaped by previous iteration
|
||||
*/
|
||||
public static function escaped(string $line, bool &$status): bool
|
||||
{
|
||||
if (preg_match('/^```/m', $line))
|
||||
{
|
||||
$status = !($status); // toggle
|
||||
}
|
||||
|
||||
return $status;
|
||||
}
|
||||
}
|
||||
67
src/Entity/Line.php
Normal file
67
src/Entity/Line.php
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Yggverse\Gemtext\Entity;
|
||||
|
||||
class Line
|
||||
{
|
||||
private string $_data;
|
||||
|
||||
private bool $_escaped;
|
||||
private ?int $_number;
|
||||
|
||||
public function __construct(
|
||||
string $data = '',
|
||||
bool $escaped = false,
|
||||
?int $number = null
|
||||
) {
|
||||
$this->setData(
|
||||
$data
|
||||
);
|
||||
|
||||
$this->setEscaped(
|
||||
$escaped
|
||||
);
|
||||
|
||||
$this->setNumber(
|
||||
$number
|
||||
);
|
||||
}
|
||||
|
||||
public function getData(): string
|
||||
{
|
||||
return $this->_data;
|
||||
}
|
||||
|
||||
public function setData(
|
||||
string $data
|
||||
): void
|
||||
{
|
||||
$this->_data = $data;
|
||||
}
|
||||
|
||||
public function getEscaped(): bool
|
||||
{
|
||||
return $this->_escaped;
|
||||
}
|
||||
|
||||
public function setEscaped(
|
||||
bool $escaped
|
||||
): void
|
||||
{
|
||||
$this->_escaped = $escaped;
|
||||
}
|
||||
|
||||
public function getNumber(): ?int
|
||||
{
|
||||
return $this->_number;
|
||||
}
|
||||
|
||||
public function setNumber(
|
||||
?int $number
|
||||
): void
|
||||
{
|
||||
$this->_number = $number;
|
||||
}
|
||||
}
|
||||
122
src/Entity/Link.php
Normal file
122
src/Entity/Link.php
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Yggverse\Gemtext\Entity;
|
||||
|
||||
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