File: writer/docbook/writer.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmDoc#10
  module: Writer
  module: DocBook#12
has properties
module method: write / 4 #13

Code

   1  # $Id: writer.rb,v 1.6 2011/12/08 22:54:35 machan Exp $
   2 
   3  require 'tmdoc/tmstd'
   4  require 'tmdoc/tmstd/docbook'
   5  require 'tmdoc/tmstd/xml'
   6  require 'tmdoc/constant'
   7  require 'tmdoc/model/docbook'
   8 
   9 
  10  module TmDoc
  11 
  12  module Writer::DocBook
  13      def self.write(mb_store, dir_name, env, &logger)
  14          ASSERT.kind_of      mb_store,   MB::Store
  15          ASSERT.kind_of      dir_name,   String
  16          ASSERT.kind_of      env,        ENV::Environment
  17          ASSERT.opt_kind_of  logger,     Proc
  18 
  19          mb_home = mb_store.home
  20 
  21          counter = 1
  22          for mb_document in [mb_home] + mb_home.descendants
  23              ASSERT.kind_of mb_document, MBD::Abstract
  24 
  25              file_name = format(
  26                  "%s.%s", mb_document.name, OUTPUT_FILE_SUFFIX
  27              )
  28              logger.call(file_name) if logger
  29 
  30              docbook_doc = mb_document.db_element
  31              ASSERT.kind_of(
  32                  docbook_doc, TmStd::DocBook::Abstraction::Division
  33              )
  34 
  35              xml_doc     = docbook_doc.to_xml(:is_document => true)
  36              ASSERT.kind_of xml_doc, TmStd::Xml::Document
  37 
  38              file_path = format "%s/%s", dir_name, file_name
  39              Writer.write_to_file(file_path) do |io|
  40                  xml_doc.print_tree(io)
  41              end
  42 
  43              counter += 1
  44              if counter > 10
  45                  xml_doc = nil   # for GC
  46                  GC.start
  47 
  48                  counter = 1
  49              end
  50          end
  51 
  52          nil
  53      end
  54  end
  55 
  56  end # TmDoc