使用Pod :: Markdown转义尖括号

时间:2015-02-13 09:28:00

标签: perl markdown github-flavored-markdown

使用方括号<>时,我从Pod::Markdown获取正确行为时遇到问题。例如:

use strict;
use warnings;

use Data::Dump;
use Pod::Markdown;

my $str = "=head1 OPTIONS\n\n=over 4\n\n=item B<< --file=<filename> >>\n\nFile name \n\n=back\n";

my $parser = Pod::Markdown->new;
my $markdown;
$parser->output_string( \$markdown );
$parser->parse_string_document($str);

dd $markdown;

提供输出:

"# OPTIONS\n\n- **--file=<filename>**\n\n    File name \n"

哪个给出了

enter image description here

在GitHub上。因此,<filename>标记内的部分**可能被视为HTML标记,因此未显示。 期望的输出将是

"# OPTIONS\n\n- **--file=\<filename\>**\n\n    File name \n"

括号<>应使用反斜杠进行转义。

更新

似乎问题不仅限于双星序列。我根据这个更新了问题..

2 个答案:

答案 0 :(得分:1)

目前,解决方法似乎是在后处理步骤中插入反斜杠。例如:

$parser->output_string( \$markdown );
$parser->parse_string_document($str);
fix_escape_chars(\$markdown);

sub fix_escape_chars {
    my ($str) = @_;

    $$str =~ s/(?<!\\)>/\\>/g;
    $$str =~ s/(?<!\\)</\\</g;
}

这似乎运作良好..(它甚至可以在与this question中声明的内容相反的URL内部工作)..

答案 1 :(得分:1)

Pod :: Markdown 3.000已发布并修复此问题。 并非所有降价处理器都会识别反斜杠转义<个字符,因此我遵循Markdown spec建议将&<转换为html实体(&amp;&lt;