FSWIKIをプラグインからコード変換できるように
FSWIKI3.8.2の話だけど。
RTF::Writerの出力プラグイン書いてて、最初にソース全体をsjisでエンコードしたかったので、WIKI/Parse.pmのparseメソッドをちょっと変えた。
というメモ
sub parse {
my $self = shift;
- my $source = shift;
+ $self->{source} = shift;
$self->start_parse;
- $source =~ s/\r//g;
+ $self->{source} =~ s/\r//g;
- my @lines = split(/\n/,$source);
+ my @lines = split(/\n/,$self->{source});
これで、プラグインのほうでstart_parseメソッドに文字コードの変換処理を書いとけばパース処理が始まる前に変換されてよい。
RTF::WriterでMS-WORDのファイルを自動生成
FreeStyle Wikiはpdf出力が出来てXML-RPCのインターフェースもあって便利なので、日々の仕事の管理に重宝しているが、wordの出力が出来ないのがちょっと困る。今の職場は報告書などをpdfでは受け付けてはくれんので、wordで書き直さないといけないのがだるい、ややだるい? いや、まじだるい、ちょーだるい。
というわけで、RTF::Writerなどをつかってrtfを出力するプラグインなどを作ってみている。
とりあえず、日本語周りがちゃんと出るか確認したので、簡単なサンプルコード。
#!/usr/bin/perl
use RTF::Writer;
my $rtf = RTF::Writer->new_to_file( "jtest.rtf" );
$rtf->prolog('fonts' => ["MS Pゴシック"]);
$rtf->printf(
\'{\b\ul\fs80 %s}',
"初めてのRTF\r\n\r\n"
);
$rtf->paragraph(
[ \'\b', "なぜRTFか?\r\n" ],
"みんなMS-WORD好きだからなー"
);
$rtf->close;
思うようにいかない場合には、一度wordで書いたのをrtfで保存して、lessでもviでもして中を見てみるという、かなりアレな開発スタイルだが、これがなかなかわかりやすい。
FSWikiのほうはpdfプラグインをちょこっと変えてparserをRTF::Writer用に書き直せば動きそうだ。
あとRTFをちゃんと理解して、ある程度自由にコードで対応できるようになれば、ほかでもつかえるじゃん。と、時間の節約になりそうなことに気づいてちょっとやる気が出てきた。
これは欲しいかも。
Rtf Pocket Guide
入門Wiki―みんなで投稿/編集できるWebの作りかた


Rtf Pocket Guide