Module: RGen::ModelBuilder

Defined in:
lib/rgen/model_builder.rb,
lib/rgen/model_builder/builder_context.rb,
lib/rgen/model_builder/model_serializer.rb,
lib/rgen/model_builder/reference_resolver.rb

Defined Under Namespace

Classes: BuilderContext, ModelSerializer, ReferenceResolver

Class Method Summary collapse

Class Method Details

.build(package, env = nil, builderMethodsModule = nil, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rgen/model_builder.rb', line 9

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