File: transformer/object-into-document/transformer.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmDoc#14
  module: Transformer
  module: ObjectIntoDocument#16
has properties
function: transform / 6 #20
function: transform_overview / 3 #100

Code

   1  # $Id: transformer.rb,v 1.5 2011/11/23 15:55:30 machan Exp $
   2 
   3  require 'tmdoc/tmstd'
   4  require 'tmdoc/constant'
   5  require 'tmdoc/model/object'
   6  require 'tmdoc/model/document'
   7  require 'tmdoc/transformer/object-into-document/module'
   8  require 'tmdoc/transformer/object-into-document/source'
   9  require 'tmdoc/transformer/object-into-document/node'
  10  require 'tmdoc/transformer/object-into-document/link'
  11  require 'tmdoc/transformer/object-into-document/path'
  12 
  13 
  14  module TmDoc
  15 
  16  module Transformer::ObjectIntoDocument
  17 
  18  module_function
  19 
  20      def transform(
  21          mo_store,
  22          env,
  23          show_module_siblings,
  24          show_class_siblings,
  25          show_code,
  26          sort_by_name
  27      )
  28          ASSERT.kind_of mo_store,            MO::Store
  29          ASSERT.kind_of env,                 ENV::Environment
  30          ASSERT.boolean show_module_siblings
  31          ASSERT.boolean show_class_siblings
  32          ASSERT.boolean show_code
  33          ASSERT.boolean sort_by_name
  34 
  35          mo_files            = mo_store.files
  36          mo_toplevel_module  = mo_store.a_toplevel_module
  37          mo_unknown_module   = mo_store.an_unknown_module
  38          mo_builtin_module   = mo_store.a_builtin_module
  39          mo_object_class     = mo_store.an_object_class
  40 
  41          md_overview = transform_overview(
  42              mo_toplevel_module, mo_object_class, mo_files
  43          )
  44 
  45          md_unknown_modules = Module.transform_modules(
  46              mo_unknown_module,
  47              env,
  48              mo_toplevel_module, mo_object_class,
  49              'Unknown Modules',
  50              show_module_siblings,
  51              show_class_siblings,
  52              sort_by_name
  53          )
  54 
  55          md_builtin_modules = Module.transform_modules(
  56              mo_builtin_module,
  57              env,
  58              mo_toplevel_module, mo_object_class,
  59              'Built-in Modules',
  60              show_module_siblings,
  61              show_class_siblings,
  62              sort_by_name
  63          )
  64 
  65          md_user_modules = Module.transform_modules(
  66              mo_toplevel_module,
  67              env,
  68              mo_toplevel_module, mo_object_class,
  69              'User Modules',
  70              show_module_siblings,
  71              show_class_siblings,
  72              sort_by_name
  73          ) {
  74              |mo_module|
  75              ASSERT.kind_of mo_module, MOLA::GenericModule
  76 
  77              ! mo_module.kind_of?(MOLA::RootModule)
  78          }
  79 
  80          md_sources =
  81              if show_code
  82                  Source.transform_sources(
  83                      mo_files,
  84                      mo_toplevel_module, mo_object_class
  85                  )
  86              else
  87                  nil
  88              end
  89 
  90          MD::Store.new(
  91              md_overview,
  92              md_unknown_modules,
  93              md_builtin_modules,
  94              md_user_modules,
  95              md_sources
  96          )
  97      end
  98 
  99 
 100      def transform_overview(mo_toplevel_module, mo_object_class, mo_files)
 101          ASSERT.kind_of mo_toplevel_module,  MOLN::ToplevelModule
 102          ASSERT.kind_of mo_object_class,     MOLN::Object
 103          ASSERT.kind_of mo_files,            MOP::Files
 104 
 105          LOG::Progress.log "\tOverview"
 106 
 107          md_toplevel_module_node =
 108              unless mo_toplevel_module.suppressable?
 109                  LOG::Progress.log "\t\tModule Structure"
 110 
 111                  Node.transform_module_structure_node mo_toplevel_module
 112              else
 113                  nil
 114              end
 115 
 116          md_object_class_node =
 117              unless mo_object_class.suppressable?
 118                  LOG::Progress.log "\t\tClass Hierarchy"
 119 
 120                  Node.transform_class_hierarchy_node mo_object_class
 121              else
 122                  nil
 123              end
 124 
 125          md_source_structure =
 126              unless mo_files.empty?
 127                  LOG::Progress.log "\t\tSource Structure"
 128 
 129                  md_array_of_file = mo_files.sort.map { |mo_file|
 130                      ASSERT.kind_of mo_file, MOP::File
 131 
 132                      MDN::File.new Link.transform_link_to_file(mo_file)
 133                  }
 134 
 135                  md_set_of_file = MDN::SeqOfFile.new md_array_of_file
 136 
 137                  MDN::SourceStructure.new md_set_of_file
 138              else
 139                  nil
 140              end
 141 
 142          if [
 143              md_toplevel_module_node,
 144              md_object_class_node,
 145              md_source_structure
 146          ].all? { |md_node| md_node.nil? }
 147              return nil
 148          end
 149 
 150          MDO::Overview.new(
 151              md_toplevel_module_node,
 152              md_object_class_node,
 153              md_source_structure
 154          )
 155      end
 156  end
 157 
 158  end