HikiDoc.pm 公開 #
HikiDoc.pm を公開しました。「B’s Soft 」のコーナーにおいてあります。
ついでに日記に「HikiDoc」というカテゴリを作った。これで多少はまじめにメンテする。。。かもしれない。
ともあれ、オリジナルの作者、かずひこ氏に感謝。
NAME
Text::HikiDoc - 「テキスト→HTML」変換ツール 'HikiDoc' の Perl による実装
SYNOPSIS
use Text::HikiDoc;
# $text = '!Title';
# $html = '<h1>Title</h1>';
$obj = Text::HikiDoc->new();
$html = $obj->to_html($text);
or
$obj = Text::HikiDoc->new($text);
$html = $obj->to_html();
# $text = "!Title¥n----¥n!!SubTitle";
# $html = "<h2>Title</h2>¥n<hr />¥n<h3>SubTitle</h3>";
$obj = Text::HikiDoc->new({
string => $text,
level => 2,
empty_element_suffix => ' />',
br_mode => 'true',
table_border => 'false',
});
or
$obj = Text::HikiDoc->new($text, 2, ' />', 'true', 'false');
$html = $obj->to_html();
# $text = "!Title¥n----¥n!!SubTitle¥nhogehoge
fugafuga";
# $html = "<h1>Title</h1>¥n<hr />¥n<h2>SubTitle</h2>¥n<p>hogehoge<br />fugafuga</p>¥n";
$obj = Text::HikiDoc->new();
$obj->enable_plugin('br');
$html = $obj->to_html($text);
$obj->enable_plugin('br','ins');
@plugins = $obj->plugin_list; # br, ins
$obj->is_enabled('br'); # 1
$obj->is_enabled('pr'); # 0
DESCRIPTION
'HikiDoc' は「テキスト→ HTML」変換ツールです。書きやすく読みやすい
文法の テキストをまともな HTML (や XHTML) に変換します。
オリジナルの 'HikiDoc' は Ruby による実装です。
本ライブラリは、Pure Perl による 'HikiDoc' の実装です。オリジナルの
'HikiDoc' と互換性を保っています。
Methods
new
HikiDoc オブジェクトを生成します。下記のパラメータを指定できます。
string
変換するテキストデータです。
level
<h1>〜<h6> タグに変換する際のレベル指定です。デフォルトは 1 です。
2 を設定すれば、HTML変換時 <h2> から始めます。
empty_element_suffix
閉タグがないタグ (<hr> や <br>など) の閉じ方を指定します。デフォ
ルトは「 />」です。<hr />のようになります。<hr> としたい場合は
「>」を設定してください。
br_mode
br_mode を「true」にすると、<p></p> 内の改行を <br> に変換します。
デフォルトは「false」です。
このパラメータは、本ライブラリ独自の拡張です。
table_border
table_border を「true」にすると <table border="1"> に、「false」
にすると <table> に変換します。デフォルトは「true」です。
このパラメータは、本ライブラリ独自の拡張です。
to_html
HTML に変換します。
string
変換するテキストデータです。もし new と to_html の両方で string
を設定した場合は、to_html の方が優先されます。
enable_plugin(@args)
プラグインを有効にします。「@args」はプラグインの名前リストです
plugin_list
有効になっているプラグインの名前リストを返します
is_enabled($str)
プラグイン $str が有効かどうか 1 か 0 で返します。有効なら 1 を返し
ます
Plugin
Text::HikiDoc はプラグインによる拡張が可能です。enable_plugin() を
使って、プラグインを有効にできます
Text::HikiDoc::Plugin::aa
{{aa "
(__)
(oo)
/-------¥/
/ | ||
* ||----||
‾‾ ‾‾
"}}
を下記のように変換します
<pre class="ascii-art">
(__)
(oo)
/-------¥/
/ | ||
* ||----||
‾‾ ‾‾
</pre>
Text::HikiDoc::Plugin::texthighlight か Text::HikiDoc::Plugin::vimcolor
が有効なら、下記のように書く事もできます
<<< aa
(__)
(oo)
/-------¥/
/ | ||
* ||----||
‾‾ ‾‾
>>>
Text::HikiDoc::Plugin::br
を下記のように変換します
<br />
Text::HikiDoc::Plugin::e
{{e('hearts')}} {{e('9829')}}
を下記のように変換します
♥ ♥
Text::HikiDoc::Plugin::ins
{{ins 'insert part'}}
を下記のように変換します
<ins>insert part</ins>
Text::HikiDoc::Plugin::sub
H{{sub('2')}}O
を下記のように変換します
H<sub>2</sub>O
Text::HikiDoc::Plugin::sup
2{{sup(3)}}=8
を下記のように変換します
2<sup>3</sup>=8
Text::HikiDoc::Plugin::texthighlight
pre に、Text::Highlight を使ったシンタックスハイライトを追加します
下記の表記は、Perl のソースコードとしてハイライトされます。
「<<< Perl」のかわりに「<<<」と記述すれば、ハイライトされない通常
の pre になります
<<< Perl
sub dummy {
$string = shift;
$string =‾ /$PLUGIN_RE/;
print "s:$string¥tm:$1¥ta:$2¥n";
$a = $2;
$a =‾ s/^¥s*(.*)¥s*$/$1/;
if ( $a =‾ /($PLUGIN_RE)/ ) {
&hoge($a);
}
return $string;
}
>>>
NOTE: このプラグインの実装方法は将来変わるかもしれません
Text::HikiDoc::Plugin::vimcolor
pre に、Text::VimColor を使ったシンタックスハイライトを追加します
NOTE: このプラグインの実装方法は将来変わるかもしれません
SEE ALSO
本家 'HikiDoc' サイト
http://http://projects.netlab.jp/hikidoc/
Text::HikiDoc::Plugin
Text::HikiDoc::Plugin::aa
Text::HikiDoc::Plugin::br
Text::HikiDoc::Plugin::e
Text::HikiDoc::Plugin::ins
Text::HikiDoc::Plugin::sub
Text::HikiDoc::Plugin::sup
Text::HikiDoc::Plugin::texthighlight
Text::HikiDoc::Plugin::vimcolor
AUTHORS
オリジナルの 'HikiDoc' はかずひこ氏 <kazuhiko@fdiary.net> によって
作られました。
本ライブラリの本リリースは、川端 一道 (Higemaru) <oneroad@mac.com>
によって作られました。
http://haro.jp/
COPYRIGHT AND LICENSE
This library 'HikiDoc.pm' is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.
Copyright (C) 2006- Kawabata, Kazumichi (Higemaru) <oneroad@mac.com>