mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
add new tags word wrap support
This commit is contained in:
parent
375a7f0d52
commit
66b94ee7d3
3 changed files with 42 additions and 11 deletions
|
|
@ -82,24 +82,33 @@ class Markup implements \Yggverse\Yoda\Interface\Model\Gtk\Pango\Markup
|
|||
): string
|
||||
{
|
||||
return sprintf(
|
||||
'* %s', // @TODO
|
||||
'<span>%s</span>', // @TODO
|
||||
self::_wrap(
|
||||
htmlspecialchars(
|
||||
sprintf(
|
||||
'* %s',
|
||||
$value
|
||||
)
|
||||
),
|
||||
self::TAG_LIST,
|
||||
$width
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public static function quote(
|
||||
string $value
|
||||
string $value,
|
||||
int $width = self::WRAP_WIDTH
|
||||
): string
|
||||
{
|
||||
return sprintf(
|
||||
'<i>%s</i>',
|
||||
self::_wrap(
|
||||
htmlspecialchars(
|
||||
$value
|
||||
),
|
||||
self::TAG_QUOTE,
|
||||
$width
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -113,6 +122,7 @@ class Markup implements \Yggverse\Yoda\Interface\Model\Gtk\Pango\Markup
|
|||
htmlspecialchars(
|
||||
$value
|
||||
),
|
||||
self::TAG_TEXT,
|
||||
$width
|
||||
);
|
||||
}
|
||||
|
|
@ -131,8 +141,12 @@ class Markup implements \Yggverse\Yoda\Interface\Model\Gtk\Pango\Markup
|
|||
bool $close
|
||||
): string
|
||||
{
|
||||
if (in_array($const, [self::TAG_CODE]))
|
||||
{
|
||||
if (in_array($const, [
|
||||
self::TAG_CODE,
|
||||
self::TAG_LIST,
|
||||
self::TAG_QUOTE,
|
||||
self::TAG_TEXT
|
||||
])) {
|
||||
return sprintf(
|
||||
$close ? '</%s>' : '<%s>',
|
||||
$const
|
||||
|
|
@ -145,6 +159,7 @@ class Markup implements \Yggverse\Yoda\Interface\Model\Gtk\Pango\Markup
|
|||
// @TODO optimization wanted, wordwrap / set_line_wrap not solution
|
||||
protected static function _wrap(
|
||||
string $string,
|
||||
string $tag,
|
||||
int $width,
|
||||
string $break = PHP_EOL,
|
||||
int $line = 1,
|
||||
|
|
@ -163,9 +178,21 @@ class Markup implements \Yggverse\Yoda\Interface\Model\Gtk\Pango\Markup
|
|||
if (isset($words[$line]))
|
||||
{
|
||||
$label->set_markup(
|
||||
sprintf(
|
||||
'%s%s%s',
|
||||
self::tag(
|
||||
$tag,
|
||||
false
|
||||
),
|
||||
implode(
|
||||
' ' , $words[$line]
|
||||
) . ' ' . $word
|
||||
) . ' ' . $word,
|
||||
self::tag(
|
||||
$tag,
|
||||
true
|
||||
)
|
||||
)
|
||||
|
||||
);
|
||||
|
||||
if ($label->get_layout()->get_pixel_size()['width'] > $width)
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@ interface Markup
|
|||
{
|
||||
public const ENCODING = 'UTF-8';
|
||||
public const TAG_CODE = 'tt';
|
||||
public const TAG_QUOTE = 'i';
|
||||
public const TAG_TEXT = 'span';
|
||||
public const TAG_LIST = 'span';
|
||||
public const WRAP_WIDTH = 320;
|
||||
|
||||
public static function code(
|
||||
|
|
|
|||
|
|
@ -157,7 +157,8 @@ class Gemtext extends \Yggverse\Yoda\Abstract\Model\Gtk\Pango\Markup
|
|||
else
|
||||
{
|
||||
$line[] = self::quote(
|
||||
$entity->getText()
|
||||
$entity->getText(),
|
||||
$width
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue