on 0.1.0 → 0.2.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.
Files changed (4) hide show
  1. data/lib/on/version.rb +1 -1
  2. data/lib/on.rb +8 -2
  3. data/test/on_test.rb +3 -0
  4. metadata +4 -4
data/lib/on/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class On
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/on.rb CHANGED
@@ -23,10 +23,14 @@ require 'set'
23
23
  # end
24
24
  # end
25
25
  class On
26
+ # Returns the Callback called or +nil+ if none called.
27
+ attr_reader :callback
28
+
26
29
  def initialize(*callbacks, &block)
27
30
  raise ArgumentError, "please provide at least one callback" if callbacks.empty?
28
31
  raise ArgumentError, "please provide a block" unless block
29
32
  @callbacks = Set.new(callbacks)
33
+ @callback = nil
30
34
  @block = block
31
35
  end
32
36
 
@@ -41,11 +45,13 @@ class On
41
45
  def on(name, &block)
42
46
  validate_callback!(name)
43
47
  if @callback && @callback.name == name
44
- block.call(*@callback.args)
48
+ block.call(*callback.args)
45
49
  end
46
50
  end
47
51
 
48
- Callback = Struct.new(:name, :args)
52
+ # Represents a callback called with its +name+ and +args+.
53
+ class Callback < Struct.new(:name, :args)
54
+ end
49
55
 
50
56
  class InvalidCallback < StandardError # :nodoc:
51
57
  def initialize(name)
data/test/on_test.rb CHANGED
@@ -46,6 +46,8 @@ class OnTest < Testem
46
46
  on.call :success, :foo, :bar
47
47
 
48
48
  assert_called [ :block ], [ :success, :foo, :bar ]
49
+ assert on.callback
50
+ assert_equal :success, on.callback.name
49
51
  end
50
52
 
51
53
  test "calls invalid callback" do
@@ -79,6 +81,7 @@ class OnTest < Testem
79
81
  end
80
82
 
81
83
  assert_nothing_called
84
+ assert_nil on.callback
82
85
  end
83
86
  end
84
87
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 'on'
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-28 00:00:00.000000000 Z
12
+ date: 2012-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -110,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
110
  version: '0'
111
111
  segments:
112
112
  - 0
113
- hash: 418871734339587128
113
+ hash: 3260149224139585846
114
114
  required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  none: false
116
116
  requirements:
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  version: '0'
120
120
  segments:
121
121
  - 0
122
- hash: 418871734339587128
122
+ hash: 3260149224139585846
123
123
  requirements: []
124
124
  rubyforge_project:
125
125
  rubygems_version: 1.8.24