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