0

我是 perl 语法的新手,但不是正则表达式,

我正在尝试根据第一个字符向Markdown.pl中的段落添加几个类,例如

Normal paragraph

? Info paragraph

! Important paragraph

给予:

<p>Normal paragraph</p>
<p class="info">Info paragraph</p>
<p class="important">Important paragraph</p>

这是 Markdown.pl 中包装<p>标签的代码

my @grafs = split(/\n{2,}/, $text);

foreach (@grafs) {
    unless (defined( $g_html_blocks{$_} )) {
        $_ = _RunSpanGamut($_);
        s/^([ \t]*)/<p>/;
        $_ .= "</p>";
    }
}

我需要使用条件语句还是 perl 中有一种我不知道的聪明方法?

此外,如果有机会使用!并且?作为第一个字符转义\(不是强制性的,我真正需要它的机会很接近0) ,那将是很棒的

4

2 回答 2

1

我对 Perl 完全陌生,并且也在寻找特殊的段落。我遇到了这篇文章,我认为它可能对您的情况有所帮助。

http://www.pingtrip.com/weblog/2008/04/adding-custom-tags-to-markdown

他的修改div使class="note""warning"

~? This is a Note Block ~?

~! This is a Warning Block ~!

我听从了他的指示,他们工作得很好。

于 2013-06-20T17:04:11.530 回答
1

这是我到目前为止得到的,它有效,但我想知道在 perl 中是否有更聪明的方法来做到这一点

my @grafs = split(/\n{2,}/, $text);

#
# Wrap <p> tags.
#
foreach (@grafs) {
    unless (defined( $g_html_blocks{$_} )) {
        $_ = _RunSpanGamut($_);
        if ( m/^[ \t]*\?/ ){
            s/^([ \t]*\?[ \t]*)/<p class="Information">/;
        } elsif ( m/^[ \t]*\!/ ){
            s/^([ \t]*\![ \t]*)/<p class="Important">/;
        } else {
            s/^([ \t]*)/<p>/;
        }
        $_ .= "</p>";
    }
}
于 2012-05-27T22:39:37.413 回答