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