summaryrefslogtreecommitdiffstats
path: root/Source/cmDocumentationFormatterText.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-09-13 20:09:52 (GMT)
committerBrad King <brad.king@kitware.com>2013-10-16 13:22:35 (GMT)
commit80a3273b5e062ea163973b504f239e0832d4cdb4 (patch)
tree239144d8917c752fbdae1db46c413a29f0f3a521 /Source/cmDocumentationFormatterText.cxx
parentb336a1ebe48a964431734568d78256a4ebd5cdad (diff)
downloadCMake-80a3273b5e062ea163973b504f239e0832d4cdb4.zip
CMake-80a3273b5e062ea163973b504f239e0832d4cdb4.tar.gz
CMake-80a3273b5e062ea163973b504f239e0832d4cdb4.tar.bz2
Drop all documentation formatters except Usage
We now need only the Usage formatter to support command-line options that print basic usage, and the supporting indented=>preformatted markup processor to support CMake message formatting. Drop all other documentation formatters and move the remaining code up into the top cmDocumentationFormatter class.
Diffstat (limited to 'Source/cmDocumentationFormatterText.cxx')
-rw-r--r--Source/cmDocumentationFormatterText.cxx180
1 files changed, 0 insertions, 180 deletions
diff --git a/Source/cmDocumentationFormatterText.cxx b/Source/cmDocumentationFormatterText.cxx
deleted file mode 100644
index 5def194..0000000
--- a/Source/cmDocumentationFormatterText.cxx
+++ /dev/null
@@ -1,180 +0,0 @@
-/*============================================================================
- CMake - Cross Platform Makefile Generator
- Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
- Distributed under the OSI-approved BSD License (the "License");
- see accompanying file Copyright.txt for details.
-
- This software is distributed WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License for more information.
-============================================================================*/
-
-#include "cmDocumentationFormatterText.h"
-#include "cmDocumentationSection.h"
-
-cmDocumentationFormatterText::cmDocumentationFormatterText()
-:cmDocumentationFormatter()
-,TextWidth(77)
-,TextIndent("")
-{
-}
-
-void cmDocumentationFormatterText
-::PrintSection(std::ostream& os,
- const cmDocumentationSection &section,
- const char* name)
-{
- if(name && (strcmp(name, "SingleItem")!=0))
- {
- os <<
- "---------------------------------------"
- "---------------------------------------\n";
- os << name << "\n\n";
- }
-
- const std::vector<cmDocumentationEntry> &entries =
- section.GetEntries();
- for(std::vector<cmDocumentationEntry>::const_iterator op = entries.begin();
- op != entries.end(); ++op)
- {
- if(op->Name.size())
- {
- os << " " << op->Name << "\n";
- this->TextIndent = " ";
- this->PrintFormatted(os, op->Brief.c_str());
- if(op->Full.size())
- {
- os << "\n";
- this->PrintFormatted(os, op->Full.c_str());
- }
- }
- else
- {
- this->TextIndent = "";
- this->PrintFormatted(os, op->Brief.c_str());
- }
- os << "\n";
- }
-}
-
-void cmDocumentationFormatterText::PrintPreformatted(std::ostream& os,
- const char* text)
-{
- bool newline = true;
- for(const char* ptr = text; *ptr; ++ptr)
- {
- if(newline && *ptr != '\n')
- {
- os << this->TextIndent;
- newline = false;
- }
- os << *ptr;
- if(*ptr == '\n')
- {
- newline = true;
- }
- }
- os << "\n";
-}
-
-void cmDocumentationFormatterText::PrintParagraph(std::ostream& os,
- const char* text)
-{
- os << this->TextIndent;
- this->PrintColumn(os, text);
- os << "\n";
-}
-
-void cmDocumentationFormatterText::SetIndent(const char* indent)
-{
- this->TextIndent = indent;
-}
-
-void cmDocumentationFormatterText::PrintColumn(std::ostream& os,
- const char* text)
-{
- // Print text arranged in an indented column of fixed witdh.
- const char* l = text;
- long column = 0;
- bool newSentence = false;
- bool firstLine = true;
- int width = this->TextWidth - static_cast<int>(strlen(this->TextIndent));
-
- // Loop until the end of the text.
- while(*l)
- {
- // Parse the next word.
- const char* r = l;
- while(*r && (*r != '\n') && (*r != ' ')) { ++r; }
-
- // Does it fit on this line?
- if(r-l < (width-column-(newSentence?1:0)))
- {
- // Word fits on this line.
- if(r > l)
- {
- if(column)
- {
- // Not first word on line. Separate from the previous word
- // by a space, or two if this is a new sentence.
- if(newSentence)
- {
- os << " ";
- column += 2;
- }
- else
- {
- os << " ";
- column += 1;
- }
- }
- else
- {
- // First word on line. Print indentation unless this is the
- // first line.
- os << (firstLine?"":this->TextIndent);
- }
-
- // Print the word.
- os.write(l, static_cast<long>(r-l));
- newSentence = (*(r-1) == '.');
- }
-
- if(*r == '\n')
- {
- // Text provided a newline. Start a new line.
- os << "\n";
- ++r;
- column = 0;
- firstLine = false;
- }
- else
- {
- // No provided newline. Continue this line.
- column += static_cast<long>(r-l);
- }
- }
- else
- {
- // Word does not fit on this line. Start a new line.
- os << "\n";
- firstLine = false;
- if(r > l)
- {
- os << this->TextIndent;
- os.write(l, static_cast<long>(r-l));
- column = static_cast<long>(r-l);
- newSentence = (*(r-1) == '.');
- }
- else
- {
- column = 0;
- }
- }
-
- // Move to beginning of next word. Skip over whitespace.
- l = r;
- while(*l && (*l == ' ')) { ++l; }
- }
-}