callbacks_attachable 0.1.0 → 0.2.0

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: a97fe4afa9fe03a90e7b5194914e27c8e0c8a25f
4
- data.tar.gz: 70b01c27f7d5a7f4136e98d27021ac244ce02e6a
3
+ metadata.gz: 6b05399a4f322a216b88e51598db9b38b91162e3
4
+ data.tar.gz: ed5a62269bb820e77ebe95fbd424fa6c1b89db90
5
5
  SHA512:
6
- metadata.gz: c7560a2ed1d41cdd5b6e80916bb77b31ae52eaa05257117f6245df012205cea3ab8f6e1fbe3b6f353fcead414a8ea21304dbe6ca4ab15005320aa470390882c8
7
- data.tar.gz: 4ed4f18aba606945c81c9886efce2d54052378027e6f56b57bf12f7cde0184163699f6544a19fade0a5c51aa03146c60cfae88b35713f147aec7b6605124d214
6
+ metadata.gz: 9c66ee4bab342a2564dcc7ba70ca4a208f851ee6828c2ce4309b45addc0cbcbb67944d050f1718e846a425acf2cef8d3ccb0931096a5c194e8f6c8ea27d3fe92
7
+ data.tar.gz: c3c806c8de55a7254d8056b4e02626a649a9256f1f0091d06d79e1729d4c2e023825e80723156b72afb3c913ddb36541c80a3befb3a31e77c7c5ae447805bcf7
@@ -1,3 +1,3 @@
1
1
  module CallbacksAttachable
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -6,23 +6,27 @@ module CallbacksAttachable
6
6
  end
7
7
 
8
8
  module ClassMethods
9
- def on(event, &callback)
9
+ def on(event, skip: 0, &callback)
10
+ count = 0
10
11
  callbacks[event] ||= []
11
- callbacks[event] << callback
12
- callback
12
+ callbacks[event] << proc do |*args|
13
+ next unless (count += 1) > skip
14
+ instance_exec(*args, &callback)
15
+ end
16
+ callbacks[event].last
13
17
  end
14
18
 
15
- def once_on(event, &callback)
19
+ def once_on(event, *opts, &callback)
16
20
  klass = self
17
- registered_callback = on(event) do |*args|
21
+ registered_callback = on(event, *opts) do |*args|
18
22
  klass.off(event, registered_callback)
19
23
  instance_exec(*args, &callback)
20
24
  end
21
25
  end
22
26
 
23
- def until_true_on(event, &callback)
27
+ def until_true_on(event, *opts, &callback)
24
28
  klass = self
25
- registered_callback = on(event) do |*args|
29
+ registered_callback = on(event, *opts) do |*args|
26
30
  klass.off(event, registered_callback) if instance_exec(*args, &callback)
27
31
  end
28
32
  end
@@ -52,34 +56,34 @@ module CallbacksAttachable
52
56
  end
53
57
  end
54
58
 
55
- def on(event, &block)
56
- if_self(:on, event, &block)
59
+ def on(*args, &block)
60
+ if_self(:on, *args, &block)
57
61
  end
58
62
 
59
- def once_on(event, &block)
60
- if_self(:until_true_on, event) do |*args|
63
+ def once_on(*args, &block)
64
+ if_self(:until_true_on, *args) do |*args|
61
65
  block.call(*args)
62
66
  true
63
67
  end
64
68
  end
65
69
 
66
- def until_true_on(event, &block)
67
- if_self(:until_true_on, event, &block)
70
+ def until_true_on(*args, &block)
71
+ if_self(:until_true_on, *args, &block)
68
72
  end
69
73
 
70
74
  def trigger(event, *args)
71
75
  self.class.trigger(event, *args, context: self)
72
76
  end
73
77
 
74
- def off(event, callback)
75
- self.class.off(event, callback)
78
+ def off(*args)
79
+ self.class.off(*args)
76
80
  end
77
81
 
78
82
  private
79
83
 
80
- def if_self(method, event, &block)
84
+ def if_self(*args, &block)
81
85
  instance = self
82
- self.class.__send__(method, event) do |*args|
86
+ self.class.__send__(*args) do |*args|
83
87
  next false if instance != self
84
88
  block.call(*args)
85
89
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: callbacks_attachable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Aue
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-29 00:00:00.000000000 Z
11
+ date: 2015-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  version: '0'
76
76
  requirements: []
77
77
  rubyforge_project:
78
- rubygems_version: 2.4.8
78
+ rubygems_version: 2.4.5.1
79
79
  signing_key:
80
80
  specification_version: 4
81
81
  summary: Attach callbacks to ruby objects. Then, trigger and detach them.