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>

<p>これは、タグをラップするMarkdown.plのコードです

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

彼の変更divclass="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 に答える