tardvig 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 74bb4e671898af214d7bb7408eb278e6d14d0238
4
- data.tar.gz: 18d4f3800571ec7694326dc42bd5f91aac0c371e
3
+ metadata.gz: 1c2202e722e19d6b70cd47740cb0b59a16d4f7de
4
+ data.tar.gz: 083573b0dd0803e3017476b886669e698f06df30
5
5
  SHA512:
6
- metadata.gz: aede310e8a81dbcd8e17ee05d2eb92337357336b007c1957697c86aff5f44dd5a2d11c5b207ef9249738fa85eac2c97b154f4a5f99dd1195fd8ae86d0209fd7a
7
- data.tar.gz: d4554afc2f958140f7e9643caefa0d50a91982c21f12502f21d2df91a1e69430057cef056cc248f5e98e20e1702b1821daaad86adc06be0de61fa2bd830b5ded
6
+ metadata.gz: b3bd839717b9c981c01d6108e6d7ebda3c97da3d24bdfe11985342c813e1fda778b7654b5ec1d70a43ccb2c62555d6e191e8e022888fb1a8f2f1513ff2e3c941
7
+ data.tar.gz: 8d8e63e94588de9bcdd27a03d7edd9582ddcfa32a9bd74a971616f5f4cb1507bf8a5e25e50e41bcfa9c8eb68df8caa94cb1c5725e85fbc9da88a58dff7bc96ee
@@ -4,19 +4,32 @@ module Tardvig
4
4
  # It is useful when you do not have a direct access to object which you
5
5
  # are want to listen on, for example, when you have access only to GameIO
6
6
  # from a display.
7
+ #
8
+ # To proxy an event from an object, you need to add this object to
9
+ # {#tracked_list} through {#spy_on} and then you can bind a listener on it
10
+ # through proxy (see {#on} for syntax).
11
+ #
12
+ # If you want proxy to forward event to itself even if you have not bound a
13
+ # listener, you can trigger the `:wait_for_event` event on the proxy.
14
+ # You should pass the name of the event you are waiting for as an argument.
7
15
  module Proxy
8
16
  # Adds objects to tracked list so you can bind proxy listeners to them
9
17
  # @param [Hash] `name: object` pairs.
10
18
  def spy_on(objects)
11
19
  tracked_list.merge! objects
12
20
  end
13
-
21
+
14
22
  # @return [Hash] objects (with their names as keys) which you can bind
15
23
  # proxy listeners to.
16
24
  def tracked_list
17
25
  @tracked_list ||= ({}.extend DataIdentifier)
18
26
  end
19
-
27
+
28
+ def happen(event, data = nil)
29
+ track_event data if event == :wait_for_event
30
+ super event, data
31
+ end
32
+
20
33
  # It works like the original Events#on, but it also can bind listeners
21
34
  # to objects from the {tracked_list}.
22
35
  #
@@ -31,8 +44,15 @@ module Tardvig
31
44
  # to this event. *Important!* When you will trigger this event, its name
32
45
  # must be a Symbol.
33
46
  #
34
- # See spec if you did not understood.
47
+ # See spec if you have not understood.
35
48
  def on(event, &listener)
49
+ track_event event
50
+ super event, &listener
51
+ end
52
+
53
+ private
54
+
55
+ def track_event(event)
36
56
  event_id_parts = event.to_s.split ':'
37
57
  if event_id_parts.size == 2
38
58
  event_target = tracked_list.get_this event_id_parts[0]
@@ -40,12 +60,8 @@ module Tardvig
40
60
  bind_proxy_listener event_target, event, event_id_parts[1]
41
61
  end
42
62
  end
43
- super event, &listener
44
63
  end
45
-
46
- private
47
-
48
-
64
+
49
65
  def bind_proxy_listener(target, full_event_name, event_name)
50
66
  target.on event_name.to_sym do |data|
51
67
  happen full_event_name, data
@@ -1,3 +1,3 @@
1
1
  module Tardvig
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.3.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tardvig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vadim Saprykin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-29 00:00:00.000000000 Z
11
+ date: 2016-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake