Печатать встроенный Pod как форматированный текст с помощью escape-тегов termcap - PullRequest
5 голосов
/ 18 апреля 2019

Я пытаюсь вывести встроенный Pod как текст ANSI на терминал.В Perl 5 я могу использовать Pod::Text::Termcap:

use strict;
use warnings;
use Pod::Text::Termcap;

my $str = do {local $/; <DATA>};
my $parser = Pod::Text::Termcap->new();
$parser->parse_string_document( $str, \*STDERR );

__DATA__

=head1 SYNOPSIS

my_test_command I<filename> [OPTIONS]

=head1 ARGUMENTS

=over 4

=item I<filename>

File name to test

=back

=head1 OPTIONS

=over 4

=item B<--help>

Prints help

=back

=head1 DESCRIPTION

A sample test command with embedded Pod

Выход :

enter image description here

Я пытался добиться того же в Perl 6:

use v6;

%*ENV<POD_TO_TEXT_ANSI> = 1;
my @lines;
for $=pod -> $pod-block {
    for $pod-block.contents -> $pod-item {
        use Pod::To::Text;
        push @lines, pod2text($pod-item);
    }
}
say @lines.join("\n\n");

=begin pod

=head1 SYNOPSIS

my_test_command I<filename> [OPTIONS]

=head1 ARGUMENTS

=item I<filename>

File name to test

=head1 OPTIONS

=item B<--help>

Prints help

=head1 DESCRIPTION

A sample test command with embedded Pod

=end pod

Вывод :

enter image description here

Как видно, в выводе Perl 6 отсутствуют экранированные термины ANSI.Как я могу получить функции ANSI, такие как жирный шрифт и подчеркнутый текст в Perl 6?

Ответы [ 2 ]

4 голосов
/ 19 апреля 2019

Pod :: To :: Text принимает переменную окружения POD_TO_TEXT_ANSI, которая включает это.Однако установка этого env var внутри фазера DOC может быть слишком поздней, если выбранный модуль Pod::To загружается до того, как будет проанализирован код perl 6.

2 голосов
/ 18 апреля 2019

По вашему вопросу:

Как я могу получить функции ANSI, такие как жирный шрифт и подчеркнутый текст в Perl 6?

Возможно, вы захотите Terminal::ANSIColor попробовать , но вам нужно будет самостоятельно добавить управляющие коды ANSI; он не будет работать автоматически на POD

...