Lisp栞 "rep-shiori" プラグイン

* rep-shioriとは

librepをバックエンドに動作するLisp栞です。
Windows等の他OSでも、librepさえ移植すればrep-shioriはそのまま移植できますが、少なくともこのページで公開しているrep-shioriは偽林檎専用です。残念な事ですが、この栞を用いて作成したゴーストは当分の間もしくは永久に、偽林檎上でしか動作しません。

* ダウンロード(アーカイブ)

rep-shiori #0 [2669hit][2003/04/02]

* 使い方

必要なファイル

rep-shioriの動作に必要なファイルは、ghost/master/repinit.jl、あるいはそれをコンパイルしたrepinit.jlcのみです。

基本動作

起動と終了

ゴースト起動時、rep-shioriはload-pathにそのゴーストのghost/masterディレクトリを追加した後、repinit.jlまたはrepinit.jlcをロード、実行します。
アンロード時には何らかのフックを呼ぶようにする予定ですが、今の所は何もしません。

リクエスト

本体から発行されたSHIORI/3.0リクエストを、rep-shioriはそのままキーと値に分解し、alistを生成します。そのようなalistを引数として、関数shiori-3.0-get(GETリクエストの場合)またはshiori-3.0-notify(NOTIFYリクエストの場合)を呼びます。この時、Charsetヘッダは付かずに、常にUTF-8の状態で渡されます。従って、rep-shioriから呼ばれるコードはUTF-8さえ扱えれば良い事になります。
shiori-3.0-getやshiori-3.0-notifyはrep-shioriの動作に必須です。これを定義しなかった場合、ゴーストは一切動作しません。
例:
GET SHIORI/3.0
Sender: NiseRingo
ID: OnBoot

このようなリクエストは、rep-shioriによって次のようなalistに分解されます。

(("Sender" . "NiseRingo")
 ("ID" . "OnBoot"))

応答

shiori-3.0-getが、引数で渡されたものと同じ形式のalistを返せば、それがSHIORI/3.0の応答となります。alistの代わりにnilを返しても良く、その場合は"SHIORI/3.0 204 No Content"を返した事になります。
尚、shiori-3.0-notifyが何らかの値を返したとしても、rep-shioriはそれを単に捨てます。
例:
(("Sender" . "テスト")
 ("Value" . "\\h\\s[0]こんにちは\\e"))

このような応答は、rep-shioriによって次のようなSHIORI/3.0レスポンスに組み立てられます。

SHIORI/3.0 200 OK
Sender: テスト
Value: \h\s[0]こんにちは\e

* ライセンス

librepのライセンスを継承し、GPLとします。
但し、rep-shioriが読み込んで実行するlispのコードはlibrepとリンクされるのではなくlibrepによってinterpretされる存在であるため、GPLライセンスを継承する必要は無いと考えます。従って、この栞を用いて作成したゴーストは、必ずしもそのlispのコードをソースの状態で配布する必要はありません。(コンパイルしたjlcファイルのみで良いという事です。)