aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/vim-mode/node_modules/event-kit/README.md
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2015-07-10 11:12:25 -0500
committerBen Beltran <ben@nsovocal.com>2015-07-10 11:12:25 -0500
commit24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a (patch)
treeded312222bb108923da1820ba40b04d710d20e5b /atom/packages/vim-mode/node_modules/event-kit/README.md
parenteb786e82d170e2abc351a432ade616d6ecdeeb6b (diff)
Adds atom
Diffstat (limited to 'atom/packages/vim-mode/node_modules/event-kit/README.md')
-rw-r--r--atom/packages/vim-mode/node_modules/event-kit/README.md68
1 files changed, 68 insertions, 0 deletions
diff --git a/atom/packages/vim-mode/node_modules/event-kit/README.md b/atom/packages/vim-mode/node_modules/event-kit/README.md
new file mode 100644
index 0000000..0dc343d
--- /dev/null
+++ b/atom/packages/vim-mode/node_modules/event-kit/README.md
@@ -0,0 +1,68 @@
+# event-kit
+
+This is a simple library for implementing event subscription APIs.
+
+## Implementing Event Subscription APIs
+
+```coffee
+{Emitter} = require 'event-kit'
+
+class User
+ constructor: ->
+ @emitter = new Emitter
+
+ onDidChangeName: (callback) ->
+ @emitter.on 'did-change-name', callback
+
+ setName: (name) ->
+ if name isnt @name
+ @name = name
+ @emitter.emit 'did-change-name', name
+ @name
+
+ destroy: ->
+ @emitter.dispose()
+```
+
+In the example above, we implement `::onDidChangeName` on the user object, which
+will register callbacks to be invoked whenever the user's name changes. To do
+so, we make use of an internal `Emitter` instance. We use `::on` to subscribe
+the given callback in `::onDidChangeName`, and `::emit` in `::setName` to notify
+subscribers. Finally, when the `User` instance is destroyed we call `::dispose`
+on the emitter to unsubscribe all subscribers.
+
+## Consuming Event Subscription APIs
+
+`Emitter::on` returns a `Disposable` instance, which has a `::dispose` method.
+To unsubscribe, simply call dispose on the returned object.
+
+```coffee
+subscription = user.onDidChangeName (name) -> console.log("My name is #{name}")
+# Later, to unsubscribe...
+subscription.dispose()
+```
+
+You can also use `CompositeDisposable` to combine disposable instances together.
+
+```coffee
+{CompositeDisposable} = require 'event-kit'
+
+subscriptions = new CompositeDisposable
+subscriptions.add user1.onDidChangeName (name) -> console.log("User 1: #{name}")
+subscriptions.add user2.onDidChangeName (name) -> console.log("User 2: #{name}")
+
+# Later, to unsubscribe from *both*...
+subscriptions.dispose()
+```
+
+## Creating Your Own Disposables
+
+Disposables are convenient ways to represent a resource you will no longer
+need at some point. You can instantiate a disposable with an action to take when
+no longer needed.
+
+```coffee
+{Disposable} = require 'event-kit'
+
+disposable = new Disposable => @destroyResource()
+```