fix preformatted markup

This commit is contained in:
yggverse 2024-07-14 13:54:55 +03:00
parent 6d37944c04
commit 5b7ff6974e

View file

@ -160,112 +160,172 @@ class Data
case $entity instanceof \Yggverse\Gemtext\Entity\Header: case $entity instanceof \Yggverse\Gemtext\Entity\Header:
switch ($entity->getLevel()) if ($preformatted)
{ {
case 1: // # $line[] = htmlspecialchars(
$this->_wrap(
$entity->toString()
)
);
}
$line[] = sprintf( else
'<span size="xx-large">%s</span>', {
htmlspecialchars( switch ($entity->getLevel())
$this->_wrap( {
$entity->getText() case 1: // #
$line[] = sprintf(
'<span size="xx-large">%s</span>',
htmlspecialchars(
$this->_wrap(
$entity->getText()
)
) )
) );
);
// Find and return document title by first # tag // Find and return document title by first # tag
if (empty($title)) if (empty($title))
{ {
$title = $entity->getText(); $title = $entity->getText();
} }
break; break;
case 2: // ## case 2: // ##
$line[] = sprintf( $line[] = sprintf(
'<span size="x-large">%s</span>', '<span size="x-large">%s</span>',
htmlspecialchars( htmlspecialchars(
$this->_wrap( $this->_wrap(
$entity->getText() $entity->getText()
)
) )
) );
);
break; break;
case 3: // ### case 3: // ###
$line[] = sprintf( $line[] = sprintf(
'<span size="large">%s</span>', '<span size="large">%s</span>',
htmlspecialchars( htmlspecialchars(
$this->_wrap( $this->_wrap(
$entity->getText() $entity->getText()
)
) )
) );
);
break; break;
default: default:
throw new \Exception; throw new \Exception;
}
} }
break; break;
case $entity instanceof \Yggverse\Gemtext\Entity\Link: case $entity instanceof \Yggverse\Gemtext\Entity\Link:
$line[] = sprintf( if ($preformatted)
'<a href="%s" title="%s">%s</a>', {
$this->_url( $line[] = htmlspecialchars(
$entity->getAddress()
),
htmlspecialchars(
$entity->getAddress()
),
htmlspecialchars(
$this->_wrap( $this->_wrap(
$entity->getAlt() ? $entity->getAlt() $entity->toString()
: $entity->getAddress() // @TODO date
) )
) );
); }
else
{
$line[] = sprintf(
'<a href="%s" title="%s">%s</a>',
$this->_url(
$entity->getAddress()
),
htmlspecialchars(
$entity->getAddress()
),
htmlspecialchars(
$this->_wrap(
$entity->getAlt() ? $entity->getAlt()
: $entity->getAddress() // @TODO date
)
)
);
}
break; break;
case $entity instanceof \Yggverse\Gemtext\Entity\Listing: case $entity instanceof \Yggverse\Gemtext\Entity\Listing:
$line[] = sprintf( if ($preformatted)
'* %s', {
htmlspecialchars( $line[] = htmlspecialchars(
$this->_wrap( $this->_wrap(
$entity->getItem() $entity->toString()
) )
) );
); }
else
{
$line[] = sprintf(
'* %s',
htmlspecialchars(
$this->_wrap(
$entity->getItem()
)
)
);
}
break; break;
case $entity instanceof \Yggverse\Gemtext\Entity\Quote: case $entity instanceof \Yggverse\Gemtext\Entity\Quote:
$line[] = sprintf( if ($preformatted)
'<i>%s</i>', {
htmlspecialchars( $line[] = htmlspecialchars(
$this->_wrap( $this->_wrap(
$entity->getText() $entity->toString()
) )
) );
); }
else
{
$line[] = sprintf(
'<i>%s</i>',
htmlspecialchars(
$this->_wrap(
$entity->getText()
)
)
);
}
break; break;
case $entity instanceof \Yggverse\Gemtext\Entity\Text: case $entity instanceof \Yggverse\Gemtext\Entity\Text:
$line[] = htmlspecialchars( if ($preformatted)
$this->_wrap( {
$entity->getData() $line[] = htmlspecialchars(
) $this->_wrap(
); $entity->toString()
)
);
}
else
{
$line[] = htmlspecialchars(
$this->_wrap(
$entity->getData()
)
);
}
break; break;