ルギア君の戯言

雑多な記事。

wiki2html

wiki 風の記述を HTML に変換するプログラムを開発しています。


ほとんど個人的な都合のために作るのであまりくわしく説明はしないが、他にもこんなソフトを必要としているひともいるかもしれないということで、簡単に説明します。


wiki により記法は異なりますので、wiki ではないが記法が充実している「はてな記法」ベースにしております。


メタデータや記法を HTML に変換したデータを埋め込むテンプレートファイルと、メタデータを書き込んだ設定ファイル、記法で書かかれたページファイルを合成してひとつのページに仕立てます。
記法でかかれたページファイルは本文になりますので、本文だけ変えてたくさんのページを一度に作成することができます。



記法例

*      <h1>
**     <h2>
***    <h3>
****   <h4>
*****  <h5>
****** <h6>
*t*    <h1> (日付情報付き)

-            <ul><li>
+            <ol><li>
:...:...     <dt><dd>
|...|...|    <table><tr><td>
|*...|       <th>
>> ... <<    <blockquote>
>| ... |<    <pre>
>|| ... ||<  <pre> (記法無効)
>< ... ><    p タグを無効化 (2コ改行を <p> ではなく <br><br> に変換させる)

[page:ページ名] ページ名へリンク
[http://...:title=タイトル] <a>
[col=カラーコード] ... [/col] <span style="color: ... ;"> ... </span>
[fnt=フォント名] ... [/fnt]   <span style="font-family: ... ;"> ... </span>
[b] ... [/b] <b> (実際にはスタイルシートで置換)
[i] ... [/i] <i> (実際にはスタイルシートで置換)
[u] ... [/u] <u> (実際にはスタイルシートで置換)
<!-- --> コメント(ソース中にも書き出されます)


はてななどではセキュリティ強化のため一部のタグは使えませんが、この上ではまったくそのような制限はありませんので記法にないことはタグを利用して記述してください。

はてな記法と多少異なること

改行1つは <br> に置換します。
改行2つは <p> に置換します。
改行3つ以上は1つにつき <br>に変換します。


改行は Windows 用のバイナリでは CR+LF を Linux 用のバイナリでは LF を Mac 用のバイナリでは CR を改行として認識しますので、別の OS で作成されたファイルをコンバートする場合は御注意ください。

次回は template.conf (テンプレートファイル)の書き方をご説明します。

コンパイルについて

プログラムはソースコード形式でしか配布しません。
ユーザー自身が自己責任で、ビルドした上でご利用ください。
ただし、ソースコードGPL の元で配布しますので、ビルドして再配布しても構いません。


ビルドの際は cmake が必要です。(Visual C++ を利用する場合をのぞく。)
Windows の場合は CygwinMinGW も必要です。(Visual C++ を利用する場合をのぞく。)


このプログラムは C++ で書かれてます。
CGI にはできません。(Perl などの別のプログラムから実行するか改造してください。)

VC++ を使用する方へ

プロジェクトファイルは添付しておりません。
テキトーに作成してください。
new 演算子例外に bad_alloc を使用しております。必要があれば修正してください。

About Translate

このプログラムは po.h に内部で使用している文字列定数はまとめてあります。
日本語及び英語以外に翻訳したい場合はこのファイルを編集してください。


English translation is available on "po_eng.h" file.
Please rename "po_eng.h" to "po.h".
If you want to translate another language, please edit "po.h".
The information is inside it.

完成後の予定

以下のことを計画しております。

  • 完全な wiki システム化
  • Python に移植