1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
require 'rgen/model_builder/builder_context'
require 'rgen/util/method_delegation'
#require 'ruby-prof'
module RGen
module ModelBuilder
def self.build(package, env=nil, builderMethodsModule=nil, &block)
resolver = ReferenceResolver.new
bc = BuilderContext.new(package, builderMethodsModule, resolver, env)
contextModule = eval("Module.nesting", block.binding).first
Util::MethodDelegation.registerDelegate(bc, contextModule, "const_missing")
BuilderContext.currentBuilderContext = bc
begin
#RubyProf.start
bc.instance_eval(&block)
#prof = RubyProf.stop
#File.open("profile_flat.txt","w+") do |f|
# RubyProf::FlatPrinter.new(prof).print(f, 0)
# end
ensure
BuilderContext.currentBuilderContext = nil
end
Util::MethodDelegation.unregisterDelegate(bc, contextModule, "const_missing")
#puts "Resolving..."
resolver.resolve(bc.toplevelElements)
bc.toplevelElements
end
end
end
|