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

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmDoc#15
  module: Transformer
  module: DocumentIntoDocBook#17
has properties
function: transform / 6 #21

Code

   1  # $Id: transformer.rb,v 1.14 2012/01/22 14:17:24 machan Exp $
   2 
   3  require 'tmdoc/tmstd'
   4  require 'tmdoc/constant'
   5  require 'tmdoc/model/document'
   6  require 'tmdoc/model/docbook'
   7  require 'tmdoc/transformer/document-into-docbook/overview'
   8  require 'tmdoc/transformer/document-into-docbook/module'
   9  require 'tmdoc/transformer/document-into-docbook/source'
  10  require 'tmdoc/transformer/document-into-docbook/node'
  11  require 'tmdoc/transformer/document-into-docbook/link'
  12  require 'tmdoc/transformer/localizable-string'
  13 
  14 
  15  module TmDoc
  16 
  17  module Transformer::DocumentIntoDocBook
  18 
  19  module_function
  20 
  21      def transform(
  22          md_store, env, book_title, source_dir_name, tab_width, show_code
  23      )
  24          ASSERT.kind_of md_store,        MD::Store
  25          ASSERT.kind_of env,             ENV::Environment
  26          ASSERT.kind_of book_title,      String
  27          ASSERT.kind_of source_dir_name, String
  28          ASSERT.kind_of tab_width,       Integer
  29          ASSERT.boolean show_code
  30 
  31          md_overview         = md_store.an_overview
  32          md_unknown_modules  = md_store.unknown_modules
  33          md_builtin_modules  = md_store.builtin_modules
  34          md_user_modules     = md_store.user_modules
  35          md_sources          = md_store.sources
  36 
  37          transforms = [
  38              if md_overview
  39                  [
  40                      lambda { |title|
  41                          Overview.transform(
  42                              md_overview,
  43                              title,
  44                              Id::DIV_OVERVIEW,
  45                              show_code
  46                          )
  47                      },
  48 
  49                      TLS::DIV_OVERVIEW
  50                  ]
  51              else
  52                  nil
  53              end,
  54 
  55              if md_unknown_modules
  56                  [
  57                      lambda { |title|
  58                          Module.transform_modules(
  59                              md_unknown_modules,
  60                              title,
  61                              Id::DIV_UNKNOWN_M_AND_C,
  62                              show_code
  63                          )
  64                      },
  65 
  66                      TLS::DIV_UNKNOWN_M_AND_C
  67                  ]
  68              else
  69                  nil
  70              end,
  71 
  72              if md_builtin_modules
  73                  [
  74                      lambda { |title|
  75                          Module.transform_modules(
  76                              md_builtin_modules,
  77                              title,
  78                              Id::DIV_BUILTIN_M_AND_C,
  79                              show_code
  80                          )
  81                      },
  82 
  83                      TLS::DIV_BUILTIN_M_AND_C
  84                  ]
  85              else
  86                  nil
  87              end,
  88 
  89              if md_user_modules
  90                  [
  91                      lambda { |title|
  92                          Module.transform_modules(
  93                              md_user_modules,
  94                              title,
  95                              Id::DIV_USER_M_AND_C,
  96                              show_code
  97                          )
  98                      },
  99 
 100                      TLS::DIV_USER_M_AND_C
 101                  ]
 102              else
 103                  nil
 104              end,
 105 
 106              if md_sources
 107                  [
 108                      lambda { |title|
 109                          Source.transform_sources(
 110                              md_sources,
 111                              env,
 112                              title,
 113                              Id::DIV_SOURCES,
 114                              source_dir_name,
 115                              tab_width,
 116                              show_code
 117                          )
 118                      },
 119 
 120                      TLS::DIV_SOURCES
 121                  ]
 122              else
 123                  nil
 124              end
 125          ].compact
 126 
 127          mb_documents =
 128              unless transforms.empty?
 129                  mb_array_of_document = transforms.map { |transform|
 130                      ASSERT.tuple_of transform, [Proc, String]
 131                      fun, title = transform
 132 
 133                      LOG::Progress.log "\t%s", title
 134 
 135                      fun.call(title)
 136                  }.compact
 137 
 138                  unless mb_array_of_document.empty?
 139                      MBD::SeqOfDocument.new mb_array_of_document
 140                  else
 141                      MBD::EMPTY_SEQ_OF_DOCUMENT
 142                  end
 143              else
 144                  MBD::EMPTY_SEQ_OF_DOCUMENT
 145              end
 146 
 147          mb_home = MBD::Node.new(
 148              Id::HOME,
 149              DBOOK.book {
 150                  [
 151                      DBOOK.book_info {
 152                          [
 153                              DBOOK.title(book_title),
 154 
 155                              DBOOK.pub_date(Time.now.strftime('%Y-%m-%d'))
 156                          ]
 157                      }
 158                  ] + mb_documents.map { |mb_document|
 159                      ASSERT.kind_of mb_document, MBD::Abstract
 160 
 161                      DBOOK.include(mb_document.name, OUTPUT_FILE_SUFFIX)
 162                  } + [
 163                      DBOOK.index(:id => Id::INDEX)
 164                  ]
 165              },
 166              mb_documents
 167          )
 168 
 169          Link.reset_cache!
 170          DBOOK.reset_cache!
 171 
 172          MB::Store.new mb_home
 173      end
 174  end
 175 
 176  end