AKIRA-MIYAKE / SwiftyEvents

Swift event emitter library that influenced by Events.EventEmitter of node.js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SwiftyEvents Carthage compatible

SwiftyEventsはnode.jsのEventEmitterに影響を受けた、イベント通知のためのライブラリです。
NSNotificationより手軽に使うことができ、またNSObjectに依存しないことを目指して開発されています。

EventEmitter

EventEmitterオブジェクトは、指定されたイベントに対するイベントリスナを登録することができ、イベントが発生した際に登録されたイベントリスナの関数を実行することができます。

Creating EventEmitter

init<Event: Hashable, Value: Any>()

EventEmitterオブジェクトの生成時に、イベントの判別に用いる型と、イベント発生時に実行される関数の引数の型を指定します。
イベントはHashableプロトコルを実装していることが必要です。通常の文字列を用いることも可能ですが、enum型を用いることでより安全なコードを記述することが可能です。

Adding Listeners

func on(event: Event, _ function: Value -> Void) -> Listener<Value>
func on(event: Event, listener: Listener<Value>) -> Listener<Value>

指定されたイベントに対するリスナーを追加します。
関数を用いて追加した際には、関数を含んだListenerオブジェクトが生成され、返却されます。

func once(event: Event, _ function: Value -> Void) -> Listener<Value>

一度限りのリスナーをイベントに追加します。
このメソッドにより生成されたListenerオブジェクトの関数は、初回の一度しか実行されません。

Removing Listeners

func removeListener(event: Event, listener: Listener<Value>) -> Void

EventEmitterオブジェクトに登録された指定されたイベントに対するリスナを削除します。

func removeAllListeners() -> Void

EventEmitterオブジェクトに登録されている、全てのリスナを削除します。

func removeAllListeners(events: [Event]) -> Void

EventEmitterオブジェクトの指定したイベントに対する全てのリスナを削除します。

Getting Listeners

func listeners(event: Event) -> [Listener<Value>]

指定されたイベントに対するリスナを返却します。

Emitting

func emit(event: Event, value: Value) -> Bool

指定されたイベントに登録されたリスナの関数を、提供された引数を用いて実行します。
イベントに対応するリスナが存在していた場合はtrueを、それ以外はfalseを返します。

Creating Listener

func newListener(function: Value -> Void) -> Listener<Value>

引数の関数を含んだListenerオブジェクトを生成します。

Listener

Listenerオブジェクトは、EventEmitterオブジェクトがイベント発生時に実行する関数を含むオブジェクトです。

Creating Listener

init<Value: Any>(function: Value -> Void)

EventEmitterオブジェクトにより実行される関数を引数として、Listenerオブジェクトを生成します。
EventEmitterオブジェクトのnewListenerメソッドを利用することにより、そのEventEmitterオブジェクトで受け入れ可能な型のListenerオブジェクトを得ることができます。

Executing Function

func exec(value: Value) -> Void

Listenerオブジェクト生成時に引数として与えた関数を実行します。
EventEmitterEmit()メソッドでは、基本的にこのメソッドを用いて関数が実行されます。

License

Copyright © 2015 AKIRA-MIYAKE Distributed under the MIT License.

About

Swift event emitter library that influenced by Events.EventEmitter of node.js

License:MIT License


Languages

Language:Swift 96.7%Language:Objective-C 3.3%