| Version 7 (modified by cho45, 5 years ago) |
|---|
Citrus
net-irc を使った IRC BOT フレームワーク
(chokan だったもの)
特徴
- 動的ロードプラギン
- 全部 UTF-8 (文字コード変換は Tiarra などで)
- チャンネルごとのプラグインのオンオフ
- テストいっぱい ( coverage: http://lab.lowreal.net/test/citrus/ )
リポジトリ
svn co http://svn.coderepos.org/share/lang/ruby/citrus/trunk/ citrus
動かすだけなら
ruby citrus.rb -c config.yaml.sample
プラグイン
- Citrus::Plugin を継承してください (必須ではないけど)
- ファイル名とクラス名は特に関係なくなりました
API
- datafile("foobar")
- Pathname でデータファイルへのパスをかえす。 (plugins/plusplus.rb を参考にしてください)
- post COMMAND, param, param
- サーバへコマンドをおくる post NOTICE, "#channel", "foobar"
- notice channel, mesg
- privmsg channel, mesg
- post をよぶさらに簡単なメソッド 詳しくはスーパークラスを参照: lib/citrus/plugin.rb
http://coderepos.org/share/browser/lang/ruby/citrus/trunk/plugins/simple_reply.rb (最も簡単なサンプル)
GetText によるメッセージのカスタマイズ
(まだ殆どのプラグインはメッセージがハードコーディングされています)
Citrus::Plugin は GetText を include しているため、サブクラスであるそれぞれのプラグインは GetText のメソッドをすぐによべ、textdomain を設定すればすぐに利用できます。plugins/always_no_op.rb を参考にしてください。
GetText の pot/po/mo ファイルの作成は (普通にやる他に) Rake タスクを利用するのが便利です。
- rake text:po
- pot/po ファイルのアップデート
- rake text:init target=<domain> lang=<lang>
- po ファイルの作成
- rake text:mo
- mo ファイルの作成
作業の流れとしては
- bindtextdomain "plugin_name" をプラグイン内でする。
- _("key") でメッセージをうめこむ
- rake text:po で pot ファイルを作る
- rake text:init target=plugin_name lang=ja で po ファイルの雛形を作る
- rake test:mo で mo を生成する
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)