forked from OSchip/llvm-project
More cleanups to the HTML rewriter (with line formatting), with better
pretty-printing of line numbers. llvm-svn: 48533
This commit is contained in:
parent
d900897bb0
commit
3f8392626b
|
@ -57,14 +57,21 @@ HTMLPrinter::~HTMLPrinter() {
|
|||
std::ostringstream os;
|
||||
|
||||
os << "<html>\n<head>\n"
|
||||
<< " <style type=\"text/css\">\n"
|
||||
<< " .nums, .lines { vertical-align:top }\n"
|
||||
<< " .nums { padding-right:.5em; width:2.5em }\n"
|
||||
<< " <style type=\"text/css\">\n"
|
||||
<< " .codeblock { width:100% }\n"
|
||||
<< " .codeline { font-family: \"Monaco\", fixed; font-size:11pt }\n"
|
||||
<< " .codeline { height:1.5em; line-height:1.5em }\n"
|
||||
<< " .nums, .lines { float:left; height:100% }\n"
|
||||
<< " .nums { background-color: #eeeeee }\n"
|
||||
<< " .nums { font-family: \"Andale Mono\", fixed; font-size:smaller }\n"
|
||||
<< " .nums { width:2.5em; padding-right:2ex; text-align:right }\n"
|
||||
<< " .lines { padding-left: 1ex; border-left: 3px solid #ccc }\n"
|
||||
<< " .lines { white-space: pre }\n"
|
||||
<< " </style>\n"
|
||||
<< "</head>\n"
|
||||
<< "<body>\n<pre>";
|
||||
<< "<body>";
|
||||
|
||||
R.InsertTextBefore(StartLoc, os.str().c_str(), os.str().size());
|
||||
R.InsertStrBefore(StartLoc, os.str());
|
||||
}
|
||||
|
||||
// Generate footer
|
||||
|
@ -72,8 +79,8 @@ HTMLPrinter::~HTMLPrinter() {
|
|||
{
|
||||
std::ostringstream os;
|
||||
|
||||
os << "</pre>\n</body></html>\n";
|
||||
R.InsertTextAfter(EndLoc, os.str().c_str(), os.str().size());
|
||||
os << "</body></html>\n";
|
||||
R.InsertStrAfter(EndLoc, os.str());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -49,16 +49,26 @@ void html::EscapeText(Rewriter& R, unsigned FileID, bool EscapeSpaces) {
|
|||
static void AddLineNumber(Rewriter& R, unsigned LineNo,
|
||||
SourceLocation B, SourceLocation E) {
|
||||
|
||||
// Surround the line with a span tag.
|
||||
// Surround the line text with a div tag.
|
||||
|
||||
R.InsertTextBefore(E, "</span>", 7);
|
||||
R.InsertTextBefore(B, "<span class=lines>", 18);
|
||||
if (B == E) // Handle empty lines.
|
||||
R.InsertCStrBefore(B, "<div class=\"lines\"> </div>");
|
||||
else {
|
||||
R.InsertCStrBefore(E, "</div>");
|
||||
R.InsertCStrBefore(B, "<div class=\"lines\">");
|
||||
}
|
||||
|
||||
// Insert a div tag for the line number.
|
||||
|
||||
// Insert a span tag for the line number.
|
||||
|
||||
std::ostringstream os;
|
||||
os << "<span class=nums>" << LineNo << "</span>";
|
||||
R.InsertTextBefore(B, os.str().c_str(), os.str().size());
|
||||
os << "<div class=\"nums\">" << LineNo << "</div>";
|
||||
|
||||
R.InsertStrBefore(B, os.str());
|
||||
|
||||
// Now surround the whole line with another div tag.
|
||||
|
||||
R.InsertCStrBefore(B, "<div class=\"codeline\">");
|
||||
R.InsertCStrAfter(E, "</div>");
|
||||
}
|
||||
|
||||
void html::AddLineNumbers(Rewriter& R, unsigned FileID) {
|
||||
|
@ -98,5 +108,13 @@ void html::AddLineNumbers(Rewriter& R, unsigned FileID) {
|
|||
++C;
|
||||
++FilePos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add one big div tag that surrounds all of the code.
|
||||
|
||||
R.InsertCStrBefore(SourceLocation::getFileLoc(FileID, 0),
|
||||
"<div id=\"codeblock\">");
|
||||
|
||||
R.InsertCStrAfter(SourceLocation::getFileLoc(FileID, FileEnd - FileBeg),
|
||||
"</div>");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue