emittable 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/emittable.rb +34 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f0ee9d870011047d7917fdfa083df1444f8ef7fb
|
4
|
+
data.tar.gz: 19735f0c2d4137a0a719cab4176687c8a4442e6e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 23e1ab958bdc5ba511dcf104aa123ce917347b28434ebd7b303bb1d9dbb14a51027589757750d8e2ee769d1f3cf5bf78e066e4c67379a890357d1e87cc21e578
|
7
|
+
data.tar.gz: a5eab8a9e16b91b3937efa9d5075bf9d366da65bc8837a9a8b4a89ea8cd93c561fbbadfbc1314041d6094d920d844b059f5e42902dabd9dd8eedbc95c68b1749
|
data/lib/emittable.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# Events are stored in the `@events` ivar.
|
2
|
+
module Emittable
|
3
|
+
|
4
|
+
# Register a handler for the given event name.
|
5
|
+
#
|
6
|
+
# obj.on(:foo) { puts "foo was called" }
|
7
|
+
#
|
8
|
+
# @param [String, Symbol] name event name
|
9
|
+
# @return handler
|
10
|
+
def on(name, &handler)
|
11
|
+
@eventable ||= Hash.new { |hash, key| hash[key] = [] }
|
12
|
+
@eventable[name] << handler
|
13
|
+
handler
|
14
|
+
end
|
15
|
+
|
16
|
+
def off(name, handler)
|
17
|
+
if @eventable and evts = @eventable[name]
|
18
|
+
evts.delete handler
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Trigger the given event name and passes all args to each handler
|
23
|
+
# for this event.
|
24
|
+
#
|
25
|
+
# obj.trigger(:foo)
|
26
|
+
# obj.trigger(:foo, 1, 2, 3)
|
27
|
+
#
|
28
|
+
# @param [String, Symbol] name event name to trigger
|
29
|
+
def trigger(name, *args)
|
30
|
+
@eventable ||= Hash.new { |hash, key| hash[key] = [] }
|
31
|
+
@eventable[name].each { |handler| handler.call(*args) }
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: emittable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rob Fors
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-02-25 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A simple event registering/triggering module to mix into classes.
|
14
|
+
email: mail@robfors.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/emittable.rb
|
20
|
+
homepage: https://github.com/robfors/emittable
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubyforge_project:
|
40
|
+
rubygems_version: 2.4.8
|
41
|
+
signing_key:
|
42
|
+
specification_version: 4
|
43
|
+
summary: Event registering and triggering.
|
44
|
+
test_files: []
|