add gemtext features

This commit is contained in:
yggverse 2024-04-03 03:57:01 +03:00
parent edf0234056
commit 00dddea554
2 changed files with 111 additions and 0 deletions

86
src/Gemtext/Body.php Normal file
View file

@ -0,0 +1,86 @@
<?php
declare(strict_types=1);
namespace Yggverse\Gemini\Gemtext;
class Body
{
private array $_lines = [];
public function __construct(string $gemtext)
{
foreach ((array) explode(PHP_EOL, $gemtext) as $line)
{
$this->_lines[] = $line;
}
}
public function getH1(): array
{
$matches = [];
foreach ($this->_lines as $line)
{
if (preg_match('/^#([^#]+)/', trim($line), $match))
{
$matches[] = trim(
$match[1]
);
}
}
return $matches;
}
public function getH2(): array
{
$matches = [];
foreach ($this->_lines as $line)
{
if (preg_match('/^##([^#]+)/', trim($line), $match))
{
$matches[] = trim(
$match[1]
);
}
}
return $matches;
}
public function getH3(): array
{
$matches = [];
foreach ($this->_lines as $line)
{
if (preg_match('/^###([^#]+)/', trim($line), $match))
{
$matches[] = trim(
$match[1]
);
}
}
return $matches;
}
public function getLinks(): array
{
$matches = [];
foreach ($this->_lines as $i => $line)
{
if (preg_match('/^=>(.*)/', trim($line), $match))
{
$matches[] = trim(
$match[1]
);
}
}
return $matches;
}
}