wiliki.format * [Module] wiliki.format テキスト中のWiLiKi形式のマークアップを解釈し、SXMLを生成する機能を 提供するモジュールです。このモジュールはwilikiの他の部分とは独立して 使うことができます。例えば、アプリケーション中に容易にwiliki互換の フォーマッティング機能を含めることができます。 アプリケーション側から呼ぶ主要なフォーマッティングルーチンは、 wiliki:format-pageおよびwiliki:format-contentです。 - wiliki:format-contentはwilikiマークアップされたテキストを 文字列として取り、フォーマットされたSXMLノードのリストを返します。 - wiliki:format-pageはページを表現するクラスの インスタンスを取り、完全なHTMLページを表現するSXML式を返します。 フォーマッティングのカスタマイズは、クラスの サブクラスを作成し、メソッドを適宜オーバロードすることで可能です。 例えば、マークアップ中のWikiNameの解釈は、メソッド wiliki:format-wikinameによって行われます。 クラスのデフォルトメソッドの多くは、 ほとんど何もしないことに注意して下さい。WikiNameのリンクやマクロ等、 wiliki.cgiで実現される機能の多くはモジュール[[wiliki]]や [[wiliki.macro]]で実装されています。 wiliki.formatモジュールを単独でアプリケーションに用いる場合は、 アプリケーションの方針に従って、WikiNameの解釈方法を設計して下さい。 * 高レベルフォーマッティング機構 ** [Procedure] wiliki:format-content ''content'' wilikiマークアップされた文字列を ''content''として受け取り、 フォーマットしたSXMLノードのリストを返します。 {{{ (wiliki:format-content "abc\n- def\n") => ((p "abc\n") (ul (li "def\n"))) }}} なお、オブジェクトを''content''に渡すことも できます。その場合は、ページの内容 (contentスロットの値) を wilikiマークアップされたテキストとしてフォーマットします。 contentスロットの値が既にSXML式であった場合は、 ** [Procedure] wiliki:format-page ''page'' [''options'' ...] ''Page''にオブジェクトを受け取り、 HTMLページを表現するSXML式を返します。 ** [Class] ページを表現するクラスです。ページはデータベースに格納されたもの (persistent page)であっても、一時的にプロセス内で作成されたもの (transient page)であっても構いません。wiliki.formatモジュール自身は データベースとのやりとりは行いません。モジュールを使うアプリケーションが 適切な方法でのインスタンスを作成し、フォーマットルーチンに 渡します。アプリケーションは必要に応じてクラスの サブクラスを作成することもできます。 *** [Slot] title ページタイトル文字列。デフォルトでページフォーマット時にtitle要素および bodyのヘッダ部分に使われます。 *** [Slot] key これがpersistent pageの場合、それを一意に同定するための文字列。 transient pageでは#fにしておきます。 ページフォーマットルーチン内では、この値はincludeされたページの 循環を検出するのに使われます。 *** [Slot] command transient pageの場合、そのページを再生成するためのURLのquery string。 これはwiliki本体で使われるもので、フォーマッタだけを利用 * 低レベルフォーマッティング機構 ** [Class] WiLiKiのフォーマッティングを行うモジュールです。 このクラス、もしくはそのサブクラスのインスタンスが、 グローバルなパラメータwiliki:formatterに格納されており、 WiLiKiのフォーマッティングルーチンは フォーマッティングをカスタマイズする場合は、このクラスの サブクラスを作り