orator 0.3.3 → 0.4.3

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