More HTML rewriter cleanups.  Preliminary CSS support in code pretty-printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48518 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/HTMLPrint.cpp b/Driver/HTMLPrint.cpp
index 940016a..6c8a1d1 100644
--- a/Driver/HTMLPrint.cpp
+++ b/Driver/HTMLPrint.cpp
@@ -18,6 +18,7 @@
 #include "clang/Basic/SourceManager.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "clang/AST/ASTContext.h"
+#include <sstream>
 
 using namespace clang;
 
@@ -49,10 +50,22 @@
   
   html::EscapeText(R, FileID);
   html::AddLineNumbers(R, FileID);
-  html::InsertTag(R, html::PRE, StartLoc, EndLoc, 0, 0, true);
-  html::InsertTag(R, html::BODY, StartLoc, EndLoc, NULL, "\n", true);
-  html::InsertTag(R, html::HEAD, StartLoc, StartLoc, 0, 0, true);
-  html::InsertTag(R, html::HTML, StartLoc, EndLoc, NULL, "\n", true);
+  html::InsertOuterTag(R, html::PRE, StartLoc, EndLoc, 0, 0, true);
+  html::InsertOuterTag(R, html::BODY, StartLoc, EndLoc, NULL, "\n", true);
+  
+  // Generate CSS.
+  
+  std::ostringstream css;
+  css << "\n <style type=\"text/css\">\n";
+  css << "  .nums, .lines { vertical-align:top }\n";
+  css << "  .nums { padding-right:.5em; width:2.5em }\n";
+  css << "  </style>\n";
+
+  
+  // Add <head> and <html> tags.
+  
+  html::InsertTagBefore(R, html::HEAD, StartLoc, StartLoc, 0,css.str().c_str());
+  html::InsertOuterTag(R, html::HTML, StartLoc, EndLoc, 0, "\n");
   
   // Emit the HTML.