Class: CodeRunner::Merged

Inherits:
CodeRunner
  • Object
show all
Includes:
Enumerable
Defined in:
lib/coderunner/merged_code_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(*runners) ⇒ Merged

Returns a new instance of Merged.



16
17
18
19
20
21
22
23
24
# File 'lib/coderunner/merged_code_runner.rb', line 16

def initialize(*runners)
	@runners = []
	r = runners[0]
	r.instance_variables.each do |v| 
		instance_variable_set(v, r.instance_variable_get(v))
	end
	@run_list = {}
	runners.each{|runner| add_runner(runner)}
end

Instance Method Details

#add_runner(runner) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/coderunner/merged_code_runner.rb', line 25

def add_runner(runner)
	@runners.push runner
	runner.run_list.each do |id, run|
		#raise "Duplicate ids: #{id}" if @run_list[id]
		@run_list[id] = run
	end
	@ids = @run_list.keys
end

#eachObject



12
13
14
# File 'lib/coderunner/merged_code_runner.rb', line 12

def each
	@runners.each{|r| yield(r)}
end

#merge_method(meth, *args, &block) ⇒ Object



33
34
35
36
# File 'lib/coderunner/merged_code_runner.rb', line 33

def merge_method(meth, *args, &block)
	results = @runners.map{|r| r.send(meth, *args)}
	return results.inject{|o,n| yield(o,n)}
end