فهرست منبع

ENH: add master index into html full help

Bill Hoffman 17 سال پیش
والد
کامیت
7173f2db0e

+ 3 - 0
Source/cmDocumentation.cxx

@@ -846,6 +846,9 @@ void cmDocumentation::Print(Form f, std::ostream& os)
 //----------------------------------------------------------------------------
 void cmDocumentation::Print(std::ostream& os)
 {
+  // if the formatter supports it, print a master index for 
+  // all sections
+  this->CurrentFormatter->PrintIndex(os, this->PrintSections);
   for(unsigned int i=0; i < this->PrintSections.size(); ++i)
     {
     std::string name = this->PrintSections[i]->

+ 3 - 0
Source/cmDocumentationFormatter.h

@@ -59,6 +59,9 @@ public:
                     const char* name) = 0;
   virtual void PrintPreformatted(std::ostream& os, const char* text) = 0;
   virtual void PrintParagraph(std::ostream& os, const char* text) = 0;
+  virtual void PrintIndex(std::ostream& ,
+                          std::vector<const cmDocumentationSection *>&)
+    {}
 };
 
 #endif

+ 15 - 0
Source/cmDocumentationFormatterHTML.cxx

@@ -206,3 +206,18 @@ void cmDocumentationFormatterHTML::PrintHTMLEscapes(std::ostream& os,
       }
     }
 }
+
+void cmDocumentationFormatterHTML
+::PrintIndex(std::ostream& os,
+             std::vector<const cmDocumentationSection *>& sections)
+{
+  os << "<h2><a name=\"section_Index\"/>Master Index</h2>\n";
+  os << "<ul>\n";
+  for(unsigned int i=0; i < sections.size(); ++i)
+    {
+    std::string name = sections[i]->
+      GetName((this->GetForm()));
+    os << "  <li><a href=\"#section_" << name << "\"<b>" << name << "</b></a></li>\n";
+    }
+  os << "</ul>\n";
+}

+ 3 - 1
Source/cmDocumentationFormatterHTML.h

@@ -36,7 +36,9 @@ public:
                     const cmDocumentationSection& section,
                     const char* name);
   virtual void PrintPreformatted(std::ostream& os, const char* text);
-  virtual void PrintParagraph(std::ostream& os, const char* text);
+  virtual void PrintParagraph(std::ostream& os, const char* text); 
+  virtual void PrintIndex(std::ostream& ,
+                          std::vector<const cmDocumentationSection *>&);
 private:
   void PrintHTMLEscapes(std::ostream& os, const char* text);
 };