orator 0.3.3 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NWVlYWM5Zjc1ZjJhOWE0Mjc5MDEzN2UzNTAzM2I3ZTdjNTc1OTU0Mw==
5
+ data.tar.gz: !binary |-
6
+ ODczZmM2MTBkOWQ2MGJkOWEwNzI0YTBlYWUxZjA2OGI5YzA1Yzg1Zg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MmFhYzJhYmQ1ZmZmMDM4YjlmYjc4ZjEwNmVjMDAwYjY4YTM2MjM4ZmIyNjNm
10
+ ZWE1ODc2MDQ2MzYwY2M0ZmI3YmU2ZTJiMTUyZTQ5ODNkNWU2ODcxYzc5MTkw
11
+ YTc3MThkYWQ5ZDM4ODYyYWI3MWNkMDEzZDRjN2FiYzE1MWJlOGY=
12
+ data.tar.gz: !binary |-
13
+ NTBjOWJlYjQyMTZhMmYwNTJhYzE0ZTg1OTVlMjRjNWQ4Yzc3MmFlNjk2ZDQ1
14
+ NWZhNzIzNzk5NWEwNDMzNTgwNTY5YTI5YjY2MDE5ZjhlYWJkZDhlOTcxMTA0
15
+ ZmEyYmI1ZmZmZWI3OTA4NzA0Nzk2NmQzYmUzZDEwMmM1ZDkxNmI=
@@ -0,0 +1,8 @@
1
+ class ApplicationOrator < Orators::Base
2
+
3
+
4
+
5
+ end
6
+
7
+ # Do not register the ApplicationOrator with Orator, because it does not
8
+ # respond to events.
@@ -1,4 +1,4 @@
1
- class <%= orator_name.camelcase %>Orator < Orator::Base
1
+ class <%= orator_name.camelcase %>Orator < ApplicationOrator
2
2
 
3
3
  orator_name '<%= orator_name.underscore %>'
4
4
 
data/lib/orator/base.rb CHANGED
@@ -25,13 +25,29 @@ module Orator
25
25
  orator, method_name = event.to_s.split('.')
26
26
  __check_event(orator, method_name)
27
27
 
28
- __run_callbacks(:before)
28
+ @event = [orator, method_name]
29
+ __run_callbacks(:before, args)
29
30
  out = __run_event(method_name, args) unless @__prevent_event
30
- __run_callbacks(:after)
31
+ __run_callbacks(:after, args)
31
32
 
32
33
  out
33
34
  end
34
35
 
36
+ # Returns the current event that the orator is handling in `orator.event`
37
+ # form.
38
+ #
39
+ # @return [String]
40
+ def full_event
41
+ @event.join('.')
42
+ end
43
+
44
+ # Returns the current event that the orator is handling in `event` form.
45
+ #
46
+ # @return [String]
47
+ def event
48
+ @event[1]
49
+ end
50
+
35
51
  # Checks the event list to see if this class responds to it.
36
52
  #
37
53
  # @return [Set<Symbol, Proc>, nil]
@@ -103,12 +119,12 @@ module Orator
103
119
  end
104
120
 
105
121
  # Runs the callbacks.
106
- def __run_callbacks(type)
122
+ def __run_callbacks(type, args)
107
123
  self.class.send("#{type}_list").map do |cb|
108
124
  if cb.is_a? Symbol
109
- method(cb).call
125
+ method(cb).call(*args)
110
126
  else
111
- instance_exec &cb
127
+ instance_exec(*args, &cb)
112
128
  end
113
129
  end
114
130
  end
@@ -160,16 +176,61 @@ module Orator
160
176
  end
161
177
  end
162
178
 
163
- [:before, :after].each do |type|
164
- module_eval <<-METHOD, __FILE__, __LINE__
165
- def #{type}(method = nil, &block)
166
- #{type}_list << (method || block)
167
- end
179
+ # This handles the before callbacks that our orator needs. It can accept
180
+ # a method or a block, and given the two, chooses the method over the
181
+ # block.
182
+ #
183
+ # @example
184
+ # before do; something; end
185
+ # @example
186
+ # before :some_method
187
+ # @param method [Symbol] the method that will be called for the before
188
+ # callback.
189
+ # @yields []
190
+ def before(method = nil, &block)
191
+ before_list << (method or block)
192
+ end
193
+
194
+ # This sets up the before list on the first call, and returns the list
195
+ # on the first and subsequent calls.
196
+ #
197
+ # @return [Set<Symbol, Block>] the before callback list.
198
+ def before_list
199
+ @before_list ||= Set.new
200
+ end
201
+
202
+ # This handles the after callbacks that our operator needs. It can accept
203
+ # a method or a block, and given the two, chooses the method over the
204
+ # block.
205
+ #
206
+ # @example
207
+ # after do; something; end
208
+ # @example
209
+ # after :some_method
210
+ # @param method [Symbol] the method that will be called for the after
211
+ # callback.
212
+ # @yields []
213
+ def after(method = nil, &block)
214
+ after_list << (method or block)
215
+ end
168
216
 
169
- def #{type}_list
170
- @#{type}_list ||= Set.new
171
- end
172
- METHOD
217
+ # This sets up the after list on the first call, and returns the list on
218
+ # the first and subsequent calls.
219
+ #
220
+ # @return [Set<Symbol, Block>] the after callback list.
221
+ def after_list
222
+ @after_list ||= Set.new
223
+ end
224
+
225
+ # This is called when this class is inherited from. We use this to make
226
+ # sure that each subclass inherits the event list as well as the before
227
+ # and after methods.
228
+ #
229
+ # @param klass [Base]
230
+ def inherited(klass)
231
+ klass.instance_variable_set(:@event_list, event_list.dup )
232
+ klass.instance_variable_set(:@before_list, before_list.dup)
233
+ klass.instance_variable_set(:@after_list, after_list.dup )
173
234
  end
174
235
  end
175
236
 
@@ -1,5 +1,5 @@
1
1
  module Orator
2
2
 
3
3
  # Version of Orator.
4
- VERSION = '0.3.3'
4
+ VERSION = '0.4.3'
5
5
  end
@@ -72,4 +72,38 @@ describe Orator::Base do
72
72
 
73
73
  klass.new(nil).__trigger('test.some_event')
74
74
  end
75
+
76
+ it "should duplicate before events for children" do
77
+ klass = Class.new(described_class) do
78
+ orator_name 'test'
79
+
80
+ before do; end
81
+ end
82
+
83
+ klass.before_list.length.should be 1
84
+
85
+ subklass = Class.new(klass) do
86
+ orator_name 'test2'
87
+ end
88
+
89
+ subklass.before_list.length.should be 1
90
+ subklass.before_list.should eql(klass.before_list)
91
+ end
92
+
93
+ it "should duplicate after events for children" do
94
+ klass = Class.new(described_class) do
95
+ orator_name 'test'
96
+
97
+ after do; end
98
+ end
99
+
100
+ klass.after_list.length.should be 1
101
+
102
+ subklass = Class.new(klass) do
103
+ orator_name 'test2'
104
+ end
105
+
106
+ subklass.after_list.length.should be 1
107
+ subklass.after_list.should eql(klass.after_list)
108
+ end
75
109
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
5
- prerelease:
4
+ version: 0.4.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jeremy Rodi
@@ -14,7 +13,6 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: em-websocket
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: oj
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: swf_fu
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -84,63 +75,64 @@ executables:
84
75
  extensions: []
85
76
  extra_rdoc_files: []
86
77
  files:
87
- - lib/tasks/orator.rake
88
- - lib/orator.rb
89
- - lib/orator/engine.rb
90
- - lib/orator/server.rb
91
- - lib/orator/base.rb
92
78
  - lib/orator/middle_ground.rb
93
- - lib/orator/event_handler.rb
94
79
  - lib/orator/version.rb
80
+ - lib/orator/server.rb
95
81
  - lib/orator/cli.rb
96
82
  - lib/orator/client.rb
97
- - lib/generators/templates/template_orator.rb
83
+ - lib/orator/engine.rb
84
+ - lib/orator/base.rb
85
+ - lib/orator/event_handler.rb
86
+ - lib/generators/orator/orator_generator.rb
87
+ - lib/generators/orator/config_generator.rb
98
88
  - lib/generators/templates/config.yml
99
89
  - lib/generators/templates/orators/example_orator.rb
100
- - lib/generators/orator/config_generator.rb
101
- - lib/generators/orator/orator_generator.rb
90
+ - lib/generators/templates/orators/application_orator.rb
91
+ - lib/generators/templates/template_orator.rb
92
+ - lib/orator.rb
93
+ - lib/tasks/orator.rake
102
94
  - bin/orator
103
- - spec/event_handler_spec.rb
104
- - spec/middle_ground_spec.rb
105
95
  - spec/client_spec.rb
106
- - spec/base_orator_spec.rb
107
96
  - spec/spec_helper.rb
108
- - vendor/assets/swfs/WebSocketMain.swf
109
- - vendor/assets/javascripts/orator.coffee
110
- - vendor/assets/javascripts/orator/web_socket.js
111
- - vendor/assets/javascripts/orator/stringify.jquery.js
112
- - vendor/assets/javascripts/orator/header.coffee
113
- - vendor/assets/javascripts/orator/event_handler.coffee
114
- - vendor/assets/javascripts/orator/chat_logger.coffee
97
+ - spec/middle_ground_spec.rb
98
+ - spec/base_orator_spec.rb
99
+ - spec/event_handler_spec.rb
100
+ - vendor/assets/javascripts/orator/middle_ground.coffee
115
101
  - vendor/assets/javascripts/orator/swfobject.js
116
102
  - vendor/assets/javascripts/orator/command_handler.coffee
103
+ - vendor/assets/javascripts/orator/event_handler.coffee
104
+ - vendor/assets/javascripts/orator/chat_logger.coffee
105
+ - vendor/assets/javascripts/orator/web_socket.js
117
106
  - vendor/assets/javascripts/orator/strbuf.coffee
118
- - vendor/assets/javascripts/orator/middle_ground.coffee
107
+ - vendor/assets/javascripts/orator/stringify.jquery.js
108
+ - vendor/assets/javascripts/orator/header.coffee
109
+ - vendor/assets/javascripts/orator.coffee
110
+ - vendor/assets/swfs/WebSocketMain.swf
119
111
  - README.md
120
112
  - Rakefile
121
113
  - LICENSE
122
114
  homepage: http://github.com/redjazz96/orator
123
115
  licenses: []
116
+ metadata: {}
124
117
  post_install_message:
125
118
  rdoc_options: []
126
119
  require_paths:
127
120
  - lib
128
121
  required_ruby_version: !ruby/object:Gem::Requirement
129
- none: false
130
122
  requirements:
131
123
  - - ! '>='
132
124
  - !ruby/object:Gem::Version
133
125
  version: '0'
134
126
  required_rubygems_version: !ruby/object:Gem::Requirement
135
- none: false
136
127
  requirements:
137
128
  - - ! '>='
138
129
  - !ruby/object:Gem::Version
139
130
  version: '0'
140
131
  requirements: []
141
132
  rubyforge_project:
142
- rubygems_version: 1.8.24
133
+ rubygems_version: 2.0.2
143
134
  signing_key:
144
- specification_version: 3
135
+ specification_version: 4
145
136
  summary: Magic for your browser.
146
137
  test_files: []
138
+ has_rdoc: false