event_emitter 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -2,6 +2,7 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  RedCloth (4.2.9)
5
+ RedCloth (4.2.9-java)
5
6
  activesupport (2.3.14)
6
7
  hoe (3.1.1)
7
8
  rake (~> 0.8)
@@ -18,6 +19,7 @@ GEM
18
19
  syntax (1.0.0)
19
20
 
20
21
  PLATFORMS
22
+ java
21
23
  ruby
22
24
 
23
25
  DEPENDENCIES
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.0.4 2012-11-08
2
+
3
+ * instance-specific method with EventEmitter.apply(instance)
4
+
1
5
  === 0.0.3 2012-11-08
2
6
 
3
7
  * call listener with Object#instance_exec
data/Manifest.txt CHANGED
@@ -7,9 +7,11 @@ README.rdoc
7
7
  Rakefile
8
8
  lib/event_emitter.rb
9
9
  lib/event_emitter/emitter.rb
10
+ samples/instance-specific-method.rb
10
11
  samples/sample.rb
11
12
  script/console
12
13
  script/destroy
13
14
  script/generate
14
15
  test/test_event_emitter.rb
15
16
  test/test_helper.rb
17
+ test/test_singular_method.rb
data/README.rdoc CHANGED
@@ -10,6 +10,12 @@
10
10
 
11
11
  Ruby port of EventEmitter from Node.js
12
12
 
13
+ == REQUIREMENTS:
14
+
15
+ * Ruby 1.8.7+
16
+ * Ruby 1.9.3+
17
+ * JRuby 1.6.7+
18
+
13
19
  == SYNOPSIS:
14
20
 
15
21
  require "rubygems"
@@ -46,6 +52,15 @@ call
46
52
  user.emit :eat, "BEEF" # => "shokai -> BEEF"
47
53
  user.emit :eat, "Ramen" # => do not call. call only first time.
48
54
 
55
+ apply as instance-specific method
56
+
57
+ class Foo
58
+ end
59
+
60
+ foo = Foo.new
61
+ EventEmitter.apply foo
62
+
63
+
49
64
  see samples https://github.com/shokai/event_emitter/tree/master/samples
50
65
 
51
66
  == TEST:
@@ -5,6 +5,10 @@ module EventEmitter
5
5
  klass.__send__ :include, InstanceMethods
6
6
  end
7
7
 
8
+ def self.apply(object)
9
+ object.extend InstanceMethods
10
+ end
11
+
8
12
  module ClassMethods
9
13
  end
10
14
 
data/lib/event_emitter.rb CHANGED
@@ -4,5 +4,5 @@ $:.unshift(File.dirname(__FILE__)) unless
4
4
  require 'event_emitter/emitter'
5
5
 
6
6
  module EventEmitter
7
- VERSION = '0.0.3'
7
+ VERSION = '0.0.4'
8
8
  end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
3
+ require 'event_emitter'
4
+
5
+ class User
6
+ attr_accessor :name
7
+ def initialize(name)
8
+ @name = name
9
+ end
10
+ end
11
+
12
+ shokai = User.new "shokai"
13
+ ymrl = User.new "ymrl"
14
+ EventEmitter.apply shokai ## set instance-specific method
15
+
16
+ shokai.on :go do |data|
17
+ puts "#{name} go to #{data[:place]}"
18
+ end
19
+
20
+ shokai.emit :go, :place => "chiba city"
21
+
22
+ ## raise undefined-method error
23
+ begin
24
+ ymrl.on :go do |data|
25
+ puts "#{name} go to #{data[:place]}"
26
+ end
27
+ rescue => e
28
+ STDERR.puts e
29
+ end
@@ -0,0 +1,76 @@
1
+ require File.expand_path 'test_helper', File.dirname(__FILE__)
2
+
3
+ class TestSingularMethod < MiniTest::Unit::TestCase
4
+
5
+ class Foo
6
+ attr_accessor :created_at
7
+ end
8
+
9
+ def setup
10
+ @foo = Foo.new
11
+ @foo.created_at = @now = Time.now
12
+ EventEmitter.apply @foo
13
+ end
14
+
15
+ def test_on_emit
16
+ result = nil
17
+ __created_at = nil
18
+ @foo.on :chat do |data|
19
+ result = data
20
+ __created_at = created_at
21
+ end
22
+
23
+ @foo.emit :chat, :user => 'shokai', :message => 'hello world'
24
+
25
+ assert result[:user] == 'shokai'
26
+ assert result[:message] == 'hello world'
27
+ assert __created_at == @now, 'instance method'
28
+ end
29
+
30
+ def test_add_listener
31
+ result = nil
32
+ __created_at = nil
33
+ @foo.add_listener :chat do |data|
34
+ result = data
35
+ __created_at = created_at
36
+ end
37
+
38
+ @foo.emit :chat, :user => 'shokai', :message => 'hello world'
39
+
40
+ assert result[:user] == 'shokai'
41
+ assert result[:message] == 'hello world'
42
+ assert __created_at == @now, 'instance method'
43
+ end
44
+
45
+ def test_remove_listener
46
+ @foo.on :bar do |data|
47
+ puts "bar #{data}"
48
+ end
49
+ @foo.on :bar do |data|
50
+ puts "barbar: #{data}"
51
+ end
52
+
53
+ id = @foo.on :baz do |data|
54
+ p data
55
+ end
56
+
57
+ assert @foo.events.size == 3, 'check registerd listener count'
58
+ @foo.remove_listener id
59
+ assert @foo.events.size == 2, 'remove listener by id'
60
+
61
+ @foo.remove_listener :bar
62
+ assert @foo.events.size == 0, 'remove all "bar" listener'
63
+ end
64
+
65
+ def test_once
66
+ total = 0
67
+ @foo.once :add do |data|
68
+ total += data
69
+ end
70
+
71
+ @foo.emit :add, 1
72
+ assert total == 1, 'first call'
73
+ @foo.emit :add, 1
74
+ assert total == 1, 'call listener only first time'
75
+ end
76
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: event_emitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -78,12 +78,14 @@ files:
78
78
  - Rakefile
79
79
  - lib/event_emitter.rb
80
80
  - lib/event_emitter/emitter.rb
81
+ - samples/instance-specific-method.rb
81
82
  - samples/sample.rb
82
83
  - script/console
83
84
  - script/destroy
84
85
  - script/generate
85
86
  - test/test_event_emitter.rb
86
87
  - test/test_helper.rb
88
+ - test/test_singular_method.rb
87
89
  - .gemtest
88
90
  homepage: http://github.com/shokai/event_emitter
89
91
  licenses: []
@@ -101,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
103
  version: '0'
102
104
  segments:
103
105
  - 0
104
- hash: -3803721958233588202
106
+ hash: 3525957517936737541
105
107
  required_rubygems_version: !ruby/object:Gem::Requirement
106
108
  none: false
107
109
  requirements:
@@ -117,3 +119,4 @@ summary: Ruby port of EventEmitter from Node.js
117
119
  test_files:
118
120
  - test/test_event_emitter.rb
119
121
  - test/test_helper.rb
122
+ - test/test_singular_method.rb