1 # $Id: store.rb,v 1.3 2011/11/30 19:26:34 machan Exp $
2
3 require 'stringio'
4
5 require 'tmdoc/tmstd'
6 require 'tmdoc/tmstd/treeable'
7 require 'tmdoc/model/module/physical'
8 require 'tmdoc/model/module/logical'
9 require 'tmdoc/constant'
10
11
12 module TmDoc
13
14 module Model::Module
15
16 class Store < Model::Abstraction::Store
17 attr_reader :files,
18 :a_toplevel_module,
19 :an_unknown_module,
20 :a_builtin_module,
21 :an_object_class
22
23
24 def initialize(
25 files,
26 a_toplevel_module,
27 an_unknown_module,
28 a_builtin_module,
29 an_object_class
30 )
31 ASSERT.kind_of files, MMP::SetOfFile
32 ASSERT.kind_of a_toplevel_module, MMLA::RootModule
33 ASSERT.kind_of an_unknown_module, MMLA::RootModule
34 ASSERT.kind_of a_builtin_module, MMLA::RootModule
35 ASSERT.kind_of an_object_class, MMLN::Object
36
37 @files = files
38 @a_toplevel_module = a_toplevel_module
39 @an_unknown_module = an_unknown_module
40 @a_builtin_module = a_builtin_module
41 @an_object_class = an_object_class
42 end
43
44
45 def file_names
46 names = @files.map { |file| file.name }
47
48 ASSERT.kind_of names, Array
49 end
50
51
52 def print
53 LOG::Debug.log "======== Module Model ========"
54 LOG::Debug.log "---- Overview ----"
55 str_io = StringIO.new
56 self.a_toplevel_module.print_tree(str_io)
57 LOG::Debug.log str_io.string
58 LOG::Debug.log
59
60 LOG::Debug.log "---- Sources ----"
61 for file in self.files.sort
62 file.print 1
63 LOG::Debug.log
64 end
65 LOG::Debug.log
66
67 LOG::Debug.log "---- Modules ----"
68 self.a_toplevel_module.print 1
69 LOG::Debug.log
70 for a_module in self.a_toplevel_module.descendants
71 a_module.print 1
72 LOG::Debug.log
73 end
74
75 nil
76 end
77 end
78
79 end # TmDoc::Model::Module
80
81 end # TmDoc