12 January 2010

Text::Hatena ではてな記法を html に変換

普段はてなばっかり使っているので, ほかのブログシステムや CMS で記事を書くときなど, ちょっとした html をはてな記法で書きたいときがあります. アスタリスクを h 要素に変えてくれたり, ハイフンでリストが作れたり, リンクを a 要素にしてくれるくらいで十分です.

cpan で探してみたら Text::Hatena というモジュールが見つかりました.

Junya Kondo / Text-Hatena-0.20 - search.cpan.org

作者は jkondo さんで, はてダで実際に使われているみたいです. 使い方も簡単です.

SYNOPSIS
         use Text::Hatena;

         my $html = Text::Hatena->parse($text);

さっそく, はてな記法で書かれたテキストを読み込んで, htmlに変換して出力するワンライナーを書きました. 勝手に挿入される

タグがいらないのでそれは除くようにしてあります.

perl -MFile::Slurp -MText::Hatena -e '$ARGV[0] or die; $text = read_file($ARGV[0]); $html = Text::Hatena->parse($text); $html =~ s#.*?\n##gi; print $html;'

これの alias を作れば便利だなと思ったんですが, alias は引数をとれないらしいので, ふつうに perl のスクリプトにしました.

#!/usr/bin/perl

use strict;
use warnings;
use Text::Hatena;
use File::Slurp;

my $filename = shift or die "usage: $0 [hatena style text file name]\n";
my $text = read_file($filename);
my $html = Text::Hatena->parse($text);
$html =~ s#?div.*?>.*?\n##gi;
print $html;

これに実行権限をつけてパスの通った場所に hatena2html と名前をつけて置いておけば,

% hatena2html foo.txt | pbcopy

などとできるようになります.