20. Text::Textile
手続き的
use Text::Textile qw/textile/;
my $text = ‘h1. textile syntax’;
my $html = textile($text);
オブジェクト指向
use Text::Textile;
my $textile = Text::Textile->new;
my $text = ‘h1. textile syntax’;
my $html = $textile->process($text);
26. Text::Textile::Pluggabl
e
Textile → HTML 変換の前後に処理を挟める
プラグイン形式で好きなようにできる
https://github.com/issm/p5-Text-Textile-
Pluggable
27. Text::Textile::Pluggabl
e
手続き的
use Text::Textile::Pluggable qw/textile/;
my $text = ‘h1. textile syntax’;
my $html = textile($text, [qw/Foobar/]);
オブジェクト指向
use Text::Textile;
my $textile = Text::Textile::Pluggable->new(
plugins => [qw/Foobar/],
);
my $text = ‘h1. textile syntax’;
my $html = $textile->process($text);
28. Text::Textile::Pluggabl
e
プラグインモジュール
Text::Textile::Pluggable::Plugin::*
pre メソッド → 変換前に処理
post メソッド → 変換後に処理
それぞれ処理後の文字列を返す
29. Text::Textile::Pluggabl
e
package Text::Textile::Pluggable::Plugin::Foobar;
# 変換前に処理する
sub pre {
my ($textile, $text) = @_;
...
return $text;
}
# 変換後に処理する
sub post {
my ($textile, $text) = @_;
...
return $text;
}
1;
43. Textile記法なWiki的Webアプリ
編集時のプレビュー
use PocketIO;
use PocketIO;
use Plack::Builder;
use SiTeWiki::Web::WebSocketHandler;
builder {
mount ‘/socket.io/’ => PocketIO->new(
class => ‘SiTeWiki::Web::WebSocketHandler’,
method => ‘run’,
);
};