チュートリアル:イベント¶
xonshで情報を保持する最善の方法は何ですか?イベントを購読する!
概要¶
単純に、イベントとは、さまざまな種類のxonshが、何が起こっているのかを互いに伝えるための方法です。現在のディレクトリが変更された場合や、コマンドが実行される直前など、何らかのメモが発生した場合に起動されます。
xonshは独自のイベントシステムを持っていますが、他のイベントシステムと似ているわけではありません。あなたがイベントを知っているなら、これは理解しやすいはずです。そうでなければ、この文書はあなたのために余分です。
私にコードを教えてください!¶
大丈夫、大丈夫!
これは、現在のディレクトリが変更されるたびにcd
、pushd
(または他のいくつかのコマンドのために)ファイルに行を追加します:
@events.on_chdir
def add_to_file(olddir, newdir, **kw):
with open(g`~/.dirhist`[0], 'a') as dh:
print(newdir, file=dh)
渡された正確な引数と期待される戻り値は、イベントごとに異なります。詳細は イベントリストを参照してください。
イベントシステムはキーワードのみであることに注意してください。イベントハンドラは引数名と一致する必要があり、**kw
将来の変更に対する保護としてasを持つ必要があり
ます。
これも使えますか?¶
はい!それは簡単です!あなたのxontribでは、次のようなことをしなければなりません:
events.doc('myxontrib_on_spam', """
myxontrib_on_spam(can: Spam) -> bool?
Fired in case of spam. Return ``True`` if it's been eaten.
""")
これにより、ユーザーはコールhelp(events.myxontrib_on_spam)
して有用な出力を得ることができます。
さらなる読書¶
使用可能なイベントの完全なリストについては、イベントのリファレンスを参照してください。
イベントが何を起きさせるかについての詳細な詳細については、「高度なイベント」を参照してください 。