Irc-Agent for S-Expr の略。
状況
ここに書いた仕様とは別のものを作り始めてしまった。
概要
- S式採用言語向けのirc用ラッパー。
- 「これがあると、楽にircにアクセスするスクリプトを作れる」ような受け口になる事を期待して作成中
リポジトリ
とりあえず作るだけ作った。
要求
要件
- このラッパー単体で一つのプロセスとする。このラッパーを呼び出す親プロセスとは分ける。
- このラッパープロセスは内部にて状態を保持する。
- STDINからコマンドを送る。
- 送るコマンドはラッパープロセスそのものに対する(bash的な意味での)内部コマンドと、ircサーバに送る(bash的な意味での)外部コマンドの二種類があるものとする。
- 両者は先頭の記号で区別する。
- 内部コマンドは全て「%」で始まる。外部コマンドは全て「/」で始まる。
- コマンドを送信する書式は以下の種類から好きなものを任意で選べる。
- 一行1コマンドのirc方式。「/PRIVMSG #channel hogerara」のように送る。改行で終了。人間がテストする際に楽。
- 一行1S式のLisp風cui方式。「(/PRIVMSG "#channel" "hogerara")」のように送る。S式は改行で終了。引数はシンボルで送っても文字列で送ってもok(文字列の方が無難だが)。一行が正しいS式を構築しない場合はエラーを返す(具体的な通知内容はまだ未定)。
- 前述のどちらなのかは、readによって最初の要素を読み取り、それがlistであるかどうかで判定する。
- これ以外にも、
- STDOUTから結果を受け取る???
- この部分についてはもう少し仕様を煮詰める必要がある。
- PINGに自動的にPONGを返す。
- flood対策。
- 通信障害などに対する対応。
内部コマンド
TODO
- Cで書き直す(もし必要なら。そして多分必要にはならない)。
- 複数サーバ対応。
- プロセスは「カレントサーバ」の状態を持ち、外部コマンドは基本的に「カレントサーバ」に対してのみ送られるものとする。
- このサーバに対する仕様は、もう少し練る必要があるかも。
- 例えば、リーダーマクロを使って、「/PRIVMSG server#channel hogerara」と外部コマンドを受け取った場合は、カレントサーバを変更する?
- これは無しにする。代わりに、%begin等の内部コマンドを用意し、一時的にカレントサーバを変更しやすいようにする。
- ある程度完成したら、FreshMeatとかに登録する?
- 登録してもいいが、英語の説明文を書くのが面倒なので多分登録しない。
最終更新 : 2008/12/27 21:22:42 JST