yggverse
8 months ago
2 changed files with 108 additions and 0 deletions
@ -0,0 +1,86 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
declare(strict_types=1); |
||||||
|
|
||||||
|
namespace Yggverse\Gemini; |
||||||
|
|
||||||
|
class Pango |
||||||
|
{ |
||||||
|
public static function fromGemtext( |
||||||
|
string $gemtext |
||||||
|
): string |
||||||
|
{ |
||||||
|
return self::fromBody( |
||||||
|
new \Yggverse\Gemini\Gemtext\Body( |
||||||
|
$gemtext |
||||||
|
) |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
public static function fromBody( |
||||||
|
\Yggverse\Gemini\Gemtext\Body $body |
||||||
|
): string |
||||||
|
{ |
||||||
|
// Format body |
||||||
|
$lines = $body->getLines(); |
||||||
|
|
||||||
|
$escaped = []; |
||||||
|
|
||||||
|
/// Format H1 |
||||||
|
foreach ($body->getH1() as $index => $h1) |
||||||
|
{ |
||||||
|
$lines[$index] = sprintf( |
||||||
|
'<span size="xx-large">%s</span>', |
||||||
|
htmlentities( |
||||||
|
$h1 |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
$escaped[] = $index; |
||||||
|
} |
||||||
|
|
||||||
|
/// Format H2 |
||||||
|
foreach ($body->getH2() as $index => $h2) |
||||||
|
{ |
||||||
|
$lines[$index] = sprintf( |
||||||
|
'<span size="x-large">%s</span>', |
||||||
|
htmlentities( |
||||||
|
$h2 |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
$escaped[] = $index; |
||||||
|
} |
||||||
|
|
||||||
|
/// Format H3 |
||||||
|
foreach ($body->getH3() as $index => $h3) |
||||||
|
{ |
||||||
|
$lines[$index] = sprintf( |
||||||
|
'<span size="large">%s</span>', |
||||||
|
htmlentities( |
||||||
|
$h3 |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
$escaped[] = $index; |
||||||
|
} |
||||||
|
|
||||||
|
/// Escape entities |
||||||
|
foreach ($lines as $index => $line) |
||||||
|
{ |
||||||
|
if (!in_array($index, $escaped)) |
||||||
|
{ |
||||||
|
$lines[$index] = htmlentities( |
||||||
|
$line |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// @TODO links, code, escape entities |
||||||
|
|
||||||
|
return implode( |
||||||
|
PHP_EOL, |
||||||
|
$lines |
||||||
|
); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue