• このエントリーをはてなブックマークに追加

はじめに

前エントリ@hell2u さん に次のように言及されていたみたいです:

blog.iss.ms/2012/04/19/135… 良さそうなのでMarkdownでおながいします。
Twitter / @hell2u: http://t.co/x25im9FB 良さそうな …

...ということなので調子に乗って Text::Markdown::Pluggable というモジュールも書いてみました.

概要と基本的な使い方

Text::Markdown のサブクラスで,そこに「プラグイン」を読み込むしくみを追加しています.(プラグインの作り方については,Text::Textile::Pluggable 書いてみたエントリ は「プラグインの作り方」の部分のサンプルコードの [Tt]extile[Mm]arkdown に置き換えて読んでくださいw)

使い方は次のとおりです:

use Text::Markdown::Pluggable qw/markdown/;
my $html = markdown($text, [qw/Foobar +MyApp::Markdown::Plugin/]);
 
use Text::Markdown::Pluggable qw/markdown/;
my $html = markdown($text, [qw/Foobar +MyApp::Markdown::Plugin/], {
    empty_element_suffix => '>',
    tab_width => 2,
});
 
use Text::Markdown::Pluggable;
my $m = Text::Markdown->new(
    plugins => [qw/Foobar +MyApp::Markdown::Plugin/],
);
my $html = $m->markdown($text);
 
use Text::Markdown::Pluggable;
my $m = Text::Markdown->new(
    plugins => [qw/Foobar +MyApp::Markdown::Plugin/],
    empty_element_suffix => '>',
    tab_width => 2,
);
my $html = $m->markdown($text);

プラグインを読み込むことを除けば, 使い方は Text::Markdown と同様だと思います.

サンプル

Text::Textile::Pluggable と同様,次の2つのモジュールを同梱しています:

  • Text::Markdown::Pluggable::Plugin::GitHub::Links
  • Text::Markdown::Pluggable::Plugin::GitHub::Gist

GitHub::Links プラグインのサンプル:

% perl -Ilib -M5.10.0 -MText::Markdown::Pluggable=markdown -le 'say markdown("github:issm")'
<p>github:issm</p>
 
% perl -Ilib -M5.10.0 -MText::Markdown::Pluggable=markdown -le 'say markdown("github:issm", [qw/GitHub::Links/])'
<p><a href="https://github.com/issm">github:issm</a></p>
 
% perl -Ilib -M5.10.0 -MText::Markdown::Pluggable=markdown -le 'say markdown("github:issm/p5-Text-Markdown-Pluggable", [qw/GitHub::Links/])'
<p><a href="https://github.com/issm/p5-Text-Markdown-Pluggable">github:issm/p5-Text-Markdown-Pluggable</a></p>
 
%

GitHub::Gist プラグインのサンプル:

% perl -Ilib -M5.10.0 -MText::Markdown::Pluggable=markdown -le 'say markdown("gist:123456")'
<p>gist:123456</p>
 
% perl -Ilib -M5.10.0 -MText::Markdown::Pluggable=markdown -le 'say markdown("gist:123456", [qw/GitHub::Gist/])'
<script src="https://gist.github.com/123456.js"></script>
 
% perl -Ilib -M5.10.0 -MText::Markdown::Pluggable=markdown -le 'say markdown("gist:123456#file1", [qw/GitHub::Gist/])'
<script src="https://gist.github.com/123456.js?file=file1"></script>
 
%

おわりに

以上,Markdown 記法をちょこっと独自拡張するのに便利かもしれないモジュール Text::Markdown::Pluggable を調子に乗って書いてみた,というお話でした.

やっぱり Markdown記法の方が需要はあるんですかね.私はとりあえず今のところ Textile記法推し(?)で生きていってみますw

あと,Markdown にしろ Textile にしろ,Bootstrap とかのCSSフレームワークと併用するとラクしていい感じのドキュメントページができますね!