Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

ReadmeGenerator Class Reference

#include <cmt_generators.h>

Inheritance diagram for ReadmeGenerator:

Inheritance graph
[legend]
Collaboration diagram for ReadmeGenerator:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ReadmeGenerator ()
void build (const CmtSystem::cmt_string_vector &arguments)

Private Member Functions

void reset ()

Private Attributes

FragmentHandle readme_header_fragment
FragmentHandle readme_fragment
FragmentHandle readme_doc_fragment
FragmentHandle readme_use_fragment
FragmentHandle readme_trailer_fragment

Constructor & Destructor Documentation

ReadmeGenerator::ReadmeGenerator  ) 
 

Definition at line 1132 of file cmt_generators.cxx.

References readme_doc_fragment, readme_fragment, readme_header_fragment, readme_trailer_fragment, readme_use_fragment, and FragmentHandle::set().

01133 {
01134   readme_header_fragment.set ("readme_header");
01135   readme_fragment.set ("readme");
01136   readme_doc_fragment.set ("readme_doc");
01137   readme_use_fragment.set ("readme_use");
01138   readme_trailer_fragment.set ("readme_trailer");
01139 }


Member Function Documentation

void ReadmeGenerator::build const CmtSystem::cmt_string_vector arguments  ) 
 

Definition at line 1153 of file cmt_generators.cxx.

References cmt_string::c_str(), CmtSystem::cmt_string_vector, FragmentHandle::copy(), Use::discarded, cmt_string::erase(), CmtSystem::file_separator(), cmt_string::find_last_of(), Cmt::get_current_package(), Cmt::get_current_version(), Use::get_ordered_uses(), Use::get_package(), Use::get_package_name(), Package::is_cmt(), mgr_style, CmtSystem::now(), readme_doc_fragment, readme_fragment, readme_header_fragment, readme_trailer_fragment, readme_use_fragment, Use::real_path, reset(), cmt_vector< T >::size(), Use::specified_path, Use::style, cmt_string::substr(), CmtGenerator::terminate(), Use::UsePtrVector, CmtSystem::user(), and Use::version.

Referenced by Generator::build_readme().

01154 {
01155   reset ();
01156 
01157   m_PACKAGE = Cmt::get_current_package ();
01158   m_VERSION = Cmt::get_current_version ();
01159   m_DATE = CmtSystem::now ();
01160   m_USER = CmtSystem::user ();
01161 
01162   cmt_string url;
01163   cmt_string doc;
01164 
01165   for (int i = 0; i < arguments.size (); i++)
01166     {
01167       cmt_string arg = arguments[i];
01168 
01169       if (arg.substr (0, 5) == "-url=")
01170         {
01171           arg.substr (5, url);
01172         }
01173       else if (arg.substr (0, 5) == "-doc=")
01174         {
01175           arg.substr (5, doc);
01176         }
01177     }
01178 
01179   m_output_file_name = cmtdir + "README.html";
01180 
01181   m_output_file = fopen (m_output_file_name.c_str (), "wb");
01182   if (m_output_file != NULL)
01183     {
01184       readme_header_fragment.copy (m_output_file, 2, 
01185                                    &m_PACKAGE, &m_VERSION);
01186 
01187       if (doc != "")
01188         {
01189           m_DOCPATH = doc;
01190           readme_doc_fragment.copy (m_output_file, 3,
01191                                     &m_PACKAGE,
01192                                     &m_VERSION,
01193                                     &m_DOCPATH);
01194         }
01195 
01196       readme_fragment.copy (m_output_file, 2,
01197                             &m_PACKAGE,
01198                             &m_VERSION);
01199 
01200       int number;
01201       const Use::UsePtrVector& uses = Use::get_ordered_uses ();
01202 
01203       for (number = 0; number < uses.size (); number++)
01204         {
01205           const Use* use = uses[number];
01206 
01207           if (use == 0) continue;
01208           if (use->discarded) continue;
01209 
01210           Package* p = use->get_package ();
01211           if (p->is_cmt ()) continue;
01212 
01213           cmt_string selected_path;
01214 
01215           if (url == "")
01216             {
01217               selected_path = use->real_path;
01218               
01219               if (use->specified_path != "")
01220                 {
01221                   int pos = selected_path.find_last_of (use->specified_path);
01222                   if (pos != cmt_string::npos)
01223                     {
01224                       selected_path.erase (pos);
01225                     }
01226                 }
01227             }
01228           else
01229             {
01230               selected_path = url;
01231               
01232               if (use->specified_path != "")
01233                 {
01234                   selected_path += CmtSystem::file_separator ();
01235                 }
01236             }
01237           
01238           m_PACKAGEPATH = selected_path;
01239           m_PACKAGEPREFIX = use->specified_path;
01240           m_PACKAGE = use->get_package_name ();
01241           m_VERSION = use->version;
01242           m_MGRSTYLE = (use->style == mgr_style) ? "mgr" : "cmt";
01243           readme_use_fragment.copy (m_output_file, 5,
01244                                     &m_PACKAGEPATH,
01245                                     &m_PACKAGEPREFIX,
01246                                     &m_PACKAGE,
01247                                     &m_VERSION,
01248                                     &m_MGRSTYLE);
01249         }
01250 
01251       m_PACKAGE = Cmt::get_current_package ();
01252       m_VERSION = Cmt::get_current_version ();
01253       readme_trailer_fragment.copy (m_output_file, 4, 
01254                                     &m_PACKAGE, 
01255                                     &m_VERSION, 
01256                                     &m_DATE, 
01257                                     &m_USER);
01258 
01259       terminate ();
01260     }
01261 }

void ReadmeGenerator::reset  )  [private]
 

Reimplemented from CmtGenerator.

Definition at line 1141 of file cmt_generators.cxx.

References readme_doc_fragment, readme_fragment, readme_header_fragment, readme_trailer_fragment, readme_use_fragment, FragmentHandle::reset(), and CmtGenerator::reset().

Referenced by build().


Member Data Documentation

FragmentHandle ReadmeGenerator::readme_doc_fragment [private]
 

Definition at line 99 of file cmt_generators.h.

Referenced by build(), ReadmeGenerator(), and reset().

FragmentHandle ReadmeGenerator::readme_fragment [private]
 

Definition at line 98 of file cmt_generators.h.

Referenced by build(), ReadmeGenerator(), and reset().

FragmentHandle ReadmeGenerator::readme_header_fragment [private]
 

Definition at line 97 of file cmt_generators.h.

Referenced by build(), ReadmeGenerator(), and reset().

FragmentHandle ReadmeGenerator::readme_trailer_fragment [private]
 

Definition at line 101 of file cmt_generators.h.

Referenced by build(), ReadmeGenerator(), and reset().

FragmentHandle ReadmeGenerator::readme_use_fragment [private]
 

Definition at line 100 of file cmt_generators.h.

Referenced by build(), ReadmeGenerator(), and reset().


The documentation for this class was generated from the following files:
Generated on Mon May 2 10:25:58 2005 for CMT by doxygen 1.3.5