Class: CodeRunner::Merged
- Includes:
- Enumerable
- Defined in:
- lib/coderunner/merged_code_runner.rb
Instance Method Summary collapse
- #add_runner(runner) ⇒ Object
- #each ⇒ Object
-
#initialize(*runners) ⇒ Merged
constructor
A new instance of Merged.
- #merge_method(meth, *args, &block) ⇒ Object
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 |
#each ⇒ Object
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 |