callback 0.3.2 → 0.4.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.
- data/CHANGES +4 -0
- data/Rakefile +10 -2
- data/examples/callback_example.rb +18 -0
- data/lib/callback/callback.rb +14 -6
- data/spec/module_spec.rb +14 -7
- metadata +2 -1
data/CHANGES
CHANGED
data/Rakefile
CHANGED
@@ -5,13 +5,14 @@ require 'rake/clean'
|
|
5
5
|
require 'rake/rdoctask'
|
6
6
|
|
7
7
|
PKG_NAME = "callback"
|
8
|
-
PKG_VERSION = "0.
|
8
|
+
PKG_VERSION = "0.4.0"
|
9
9
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
10
10
|
PKG_FILES = FileList[
|
11
11
|
'[A-Z]*',
|
12
12
|
'*.rb',
|
13
13
|
'lib/**/*.rb',
|
14
|
-
'spec/**/*.rb'
|
14
|
+
'spec/**/*.rb',
|
15
|
+
'examples/**/*.rb'
|
15
16
|
]
|
16
17
|
|
17
18
|
spec = Gem::Specification.new do |s|
|
@@ -40,3 +41,10 @@ Rake::GemPackageTask.new(spec) do |pkg|
|
|
40
41
|
pkg.need_zip = true
|
41
42
|
pkg.need_tar = true
|
42
43
|
end
|
44
|
+
|
45
|
+
desc "Run all of the specs"
|
46
|
+
task :spec do
|
47
|
+
ARGV << "--format"
|
48
|
+
ARGV << "specdoc"
|
49
|
+
require "spec/spec_suite"
|
50
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "callback"
|
3
|
+
|
4
|
+
class Foo
|
5
|
+
callback :bar, :baz
|
6
|
+
|
7
|
+
def notify_all_callbacks
|
8
|
+
raise "Bar callback not correct" unless notify_bar == [1]
|
9
|
+
raise "Baz callback not correct" unless notify_baz == [2]
|
10
|
+
puts "Callbacks seem to be working"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
f = Foo.new
|
15
|
+
|
16
|
+
f.bar {1}
|
17
|
+
f.baz {2}
|
18
|
+
f.notify_all_callbacks
|
data/lib/callback/callback.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
module Callback
|
2
2
|
module ModuleMethods
|
3
|
-
def callback(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
def callback(*event_names)
|
4
|
+
event_names.each do |event_name|
|
5
|
+
module_eval %{
|
6
|
+
def #{event_name}(&block)
|
7
|
+
define_callback(:#{event_name}, &block)
|
8
|
+
end
|
9
|
+
|
10
|
+
def notify_#{event_name}(*args, &error_handler)
|
11
|
+
notify_callbacks(:#{event_name}, *args, &error_handler)
|
12
|
+
end
|
13
|
+
}
|
14
|
+
|
15
|
+
protected :"notify_#{event_name}"
|
16
|
+
end
|
9
17
|
end
|
10
18
|
end
|
11
19
|
|
data/spec/module_spec.rb
CHANGED
@@ -2,18 +2,25 @@ dir = File.dirname(__FILE__)
|
|
2
2
|
require "#{dir}/spec_helper"
|
3
3
|
|
4
4
|
context "A Module" do
|
5
|
-
specify "should define callback methods" do
|
5
|
+
specify "should define callback and notify callback methods" do
|
6
6
|
the_class = Class.new do
|
7
7
|
callback :foo
|
8
|
-
def call
|
9
|
-
notify_callbacks :foo
|
10
|
-
end
|
11
8
|
end
|
12
9
|
|
13
10
|
the_obj = the_class.new
|
14
|
-
the_obj.foo
|
15
|
-
|
11
|
+
the_obj.foo { :bar }
|
12
|
+
the_obj.send(:notify_foo).should == [:bar]
|
13
|
+
end
|
14
|
+
|
15
|
+
specify "should define multiple callbacks" do
|
16
|
+
the_class = Class.new do
|
17
|
+
callback :foo, :bar
|
16
18
|
end
|
17
|
-
|
19
|
+
|
20
|
+
the_obj = the_class.new
|
21
|
+
the_obj.foo { 1 }
|
22
|
+
the_obj.bar { 2 }
|
23
|
+
the_obj.send(:notify_foo).should == [1]
|
24
|
+
the_obj.send(:notify_bar).should == [2]
|
18
25
|
end
|
19
26
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: callback
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
6
|
+
version: 0.4.0
|
7
7
|
date: 2006-11-25 00:00:00 -08:00
|
8
8
|
summary: A simple callback library for ruby objects.
|
9
9
|
require_paths:
|
@@ -43,6 +43,7 @@ files:
|
|
43
43
|
- spec/spec_suite.rb
|
44
44
|
- spec/callback_container_spec.rb
|
45
45
|
- spec/object_spec.rb
|
46
|
+
- examples/callback_example.rb
|
46
47
|
test_files:
|
47
48
|
- spec/module_spec.rb
|
48
49
|
- spec/callback_container_spec.rb
|