Class: Command::Results::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/command-set/results.rb

Overview

Collects the events spawned by dispatchers and sends them to the presenter. Responsible for maintaining it’s own place within the larger tree, but doesn’t understand that other Collectors could be running at the same time - that’s the Presenter’s job.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(presenter) ⇒ Collector

Returns a new instance of Collector.



175
176
177
178
# File 'lib/command-set/results.rb', line 175

def initialize(presenter)
  @presenter = presenter
  @nesting = []
end

Class Method Details

.dispatch(method, &block) ⇒ Object

Use to register an IO method to handle. The block will be passed a Collector and the arguments passed to method.



241
242
243
244
# File 'lib/command-set/results.rb', line 241

def self.dispatch(method, &block)
  @dispatches[method] = true
  define_method(method, &block)
end

.dispatchesObject



231
232
233
# File 'lib/command-set/results.rb', line 231

def self.dispatches
  @dispatches.keys
end

.inherited(sub) ⇒ Object



227
228
229
# File 'lib/command-set/results.rb', line 227

def self.inherited(sub)
  sub.instance_variable_set("@dispatches", @dispatches.dup)
end

Instance Method Details

#begin_list(name, options = {}) ⇒ Object



200
201
202
203
204
205
206
207
# File 'lib/command-set/results.rb', line 200

def begin_list( name, options={} )
  @nesting.push(name)
  @presenter.begin_list(@nesting.dup, options)
  if block_given?
    yield
    end_list
  end
end

#dispatchesObject



235
236
237
# File 'lib/command-set/results.rb', line 235

def dispatches
  self.class.dispatches
end

#end_listObject



220
221
222
223
# File 'lib/command-set/results.rb', line 220

def end_list
  @presenter.end_list(@nesting.dup)
  @nesting.pop
end

#initialize_copy(original) ⇒ Object



180
181
182
183
# File 'lib/command-set/results.rb', line 180

def initialize_copy(original)
  @presenter = original.instance_variable_get("@presenter")
  @nesting = original.instance_variable_get("@nesting").dup
end

#item(obj, options = {}) ⇒ Object



196
197
198
# File 'lib/command-set/results.rb', line 196

def item( obj, options={} )
  @presenter.item(@nesting.dup + [obj], options)
end

#items(*objs) ⇒ Object



185
186
187
188
189
190
191
192
193
194
# File 'lib/command-set/results.rb', line 185

def items(*objs)
  if Hash === objs.last
    options = objs.pop
  else
    options = {}
  end
  objs.each do |obj|
    item(obj, options)
  end
end

#open_list(name, options = {}) ⇒ Object



209
210
211
212
213
214
215
216
217
218
# File 'lib/command-set/results.rb', line 209

def open_list(name, options={})
  @nesting.push(name)
  unless @presenter.list_open?(@nesting)
    @presenter.begin_list(@nesting.dup, options)
  end
  if block_given?
    yield
    end_list
  end
end