init Document class

This commit is contained in:
yggverse 2024-06-24 03:04:45 +03:00
parent 76a34e4ea8
commit 940819fdb7

76
src/Document.php Normal file
View file

@ -0,0 +1,76 @@
<?php
declare(strict_types=1);
namespace Yggverse\Gemtext;
use \Yggverse\Gemtext;
class Document
{
private array $_entities = [];
public function __construct(
string $data
) {
foreach ((array) explode(PHP_EOL, $data) as $line)
{
// Add entity
switch (true)
{
// Code
case Parser\Code::match($line):
$this->_entities[] = new Entity\Code(
Parser\Code::getAlt(
$line
),
Parser\Code::isInline(
$line
)
);
break;
// Link
case Parser\Link::match($line):
$this->_entities[] = new Entity\Link(
Parser\Link::getAddress(
$line
),
Parser\Link::getAlt(
$line
),
Parser\Link::getDate(
$line
)
);
break;
// Plain
default:
$this->_entities[] = new Entity\Text(
$line
);
}
}
}
public function toString(): string
{
$entities = [];
foreach ($this->_entities as $entity)
{
$entities[] = $entity->toString();
}
return implode(
PHP_EOL,
$entities
);
}
}