event_emitter 0.0.3 → 0.0.4

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/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