birdinline footnoteを通常の書き方に変更する

これまで使っていた古いHugoのMarkdown parser “blackfriday” ではinline footnoteが使えたので、これまでtdiaryから変換されたMarkdown contentsはすべてinlineで書かれていたんですが、新しいHugoで使われているgoldmarkではinline記法はサポートされていない、とのことで、通常の書き方へ変換するperl scriptを書きました。詳しくはこのへんなどを参照、かな。

使い方は書くまでもない気がしますが、標準入力や引数に変換したいmarkdownを入れると変換された結果が標準出力に出てくる、という感じです。

実際使ってみて気づきましたが、脚注内にlinkがあると尻切れトンボになってしまいますね(どちらも同じ[]を使っているため)。あと追加された脚注の直後にtabやspaceでindentされたpre sectionがあると、(改行を1つ挟んでいても)そちらも脚注内の記述と判定されてしまいますね。ちと安直な解決法が思いつかなかったので今回は該当箇所をすべて人力で修正してしまいました(^^;。メンゴ。

#!/usr/bin/env perl

my $count = 1;
my $output = 1;
my @footnote;

while (<>) {
    if (/\^\[/) {
        while (/\^\[/) {
            ($footnote[$count]) = (/\^\[([^\]]+)]/);
            $_ =~ s/\Q^[$footnote[$count]/[^$count/;
            $count = $count + 1;
        }
        print ;
    } elsif (/^$/) {
        print ;
        if ($output < $count) {
            while ($output < $count) {
                printf "[^%s]: %s\n", $output, $footnote[$output];
                $output = $output + 1;
            }
            print "\n";
        }
    } else {
        print ;
    }
}