File: transformer/core-into-module/transformer.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmDoc#14
  module: Transformer
  module: CoreIntoModule#16
has properties
function: transform / 2 #20

Code

   1  # $Id: transformer.rb,v 1.12 2011/12/10 18:18:17 machan Exp $
   2 
   3  require 'tmdoc/tmstd'
   4  require 'tmdoc/constant'
   5  require 'tmdoc/environment'
   6  require 'tmdoc/model/core'
   7  require 'tmdoc/model/module'
   8  require 'tmdoc/reader/reader'
   9  require 'tmdoc/transformer/core-into-module/constant'
  10  require 'tmdoc/transformer/core-into-module/evaluater'
  11  require 'tmdoc/transformer/core-into-module/resolver'
  12 
  13 
  14  module TmDoc
  15 
  16  module Transformer::CoreIntoModule
  17 
  18  module_function
  19 
  20      def transform(mc_store, env)
  21          ASSERT.kind_of mc_store,    MC::Store
  22          ASSERT.kind_of env,         ENV::Environment
  23 
  24          LOG::Debug.msgout "CALLED" if env.debug?
  25 
  26          map_of_path_to_module = MMLA::MapOfPathToModule.new(
  27              {
  28                  TOPLEVEL_MODULE_PATH    => MM_TOPLEVEL_MODULE,
  29                  BUILTIN_MODULE_PATH     => MM_BUILTIN_MODULE,
  30                  UNKNOWN_MODULE_PATH     => MM_UNKNOWN_MODULE,
  31                  OBJECT_CLASS_PATH       => MM_OBJECT_CLASS
  32              }
  33          )
  34 
  35          mm_array_of_file = mc_store.files.sort.map { |mc_file|
  36              mm_file = MMP::File.new(mc_file.name, mc_file.seq_num)
  37              Evaluater.evaluate!(
  38                  mc_file.a_toplevel_module,
  39                  env,
  40                  map_of_path_to_module,
  41                  mm_file
  42              )
  43 
  44              mm_file
  45          }
  46          mm_files = MMP::SetOfFile.new mm_array_of_file
  47 
  48 
  49          for mm_module in MM_TOPLEVEL_MODULE.descendants
  50              ASSERT.kind_of mm_module, MMLA::GenericModule
  51 
  52              Resolver.resolve!(
  53                  mm_module, env, map_of_path_to_module
  54              )
  55          end
  56 
  57 
  58          MM::Store.new(
  59              mm_files,
  60              MM_TOPLEVEL_MODULE,
  61              MM_UNKNOWN_MODULE,
  62              MM_BUILTIN_MODULE,
  63              MM_OBJECT_CLASS
  64          )
  65      end
  66  end
  67 
  68  end