App-sdview
view release on metacpan or search on metacpan
lib/App/sdview/Output/Man.pm view on Meta::CPAN
}
$self->say( $self->_convert_str( $item->text ) );
}
}
method _convert_str ( $s )
{
my $ret = "";
my @fontstack;
$s->iter_substr_nooverlap(
sub ( $substr, %tags ) {
$ret .= "\\fP", pop @fontstack
while @fontstack and !$tags{ $fontstack[-1] };
$tags{monospace} and (
any { $_ eq "monospace" } @fontstack or
$ret .= "\\f(CW", push @fontstack, "monospace" );
$tags{bold} and (
any { $_ eq "bold" } @fontstack or
$ret .= "\\fB", push @fontstack, "bold" );
$tags{italic} and (
any { $_ eq "italic" } @fontstack or
$ret .= "\\fI", push @fontstack, "italic" );
my $man = $substr =~ s/([\\-])/\\$1/gr;
$ret .= $man;
}
);
$ret .= "\\fP", pop @fontstack
while @fontstack;
return $ret;
}
0x55AA;
lib/App/sdview/Parser/Man.pm view on Meta::CPAN
CW => { monospace => 1 },
);
sub _chunklist_to_taggedstring ( $chunks, :$linefeed = " " )
{
my $ret = String::Tagged->new;
foreach my $chunk ( $chunks->@* ) {
my %tags;
my $font = $chunk->font // "";
%tags = $FONTTAGS{$font}->%* if $FONTTAGS{$font};
my $text = $chunk->text;
$text = "\n" if $chunk->is_space;
$text = $linefeed if $chunk->is_linebreak;
$text = "\n\n" if $chunk->is_break;
$ret->append_tagged( $text, %tags );
}
# Trim trailing space
( run in 1.815 second using v1.01-cache-2.11-cpan-97f6503c9c8 )