Modified "InsertTag" (HTML rewriter) to have an optional "OutermostTag" flag to
indicate whether or not the new tag should be the outermost tag at the specified
location (in the case that other tags have been inserted at the same spot).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48506 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Rewrite/HTMLRewrite.cpp b/lib/Rewrite/HTMLRewrite.cpp
index 3beede8..717f6ce 100644
--- a/lib/Rewrite/HTMLRewrite.cpp
+++ b/lib/Rewrite/HTMLRewrite.cpp
@@ -48,7 +48,7 @@
void html::InsertTag(Rewriter& R, html::Tags tag,
SourceLocation B, SourceLocation E,
- bool NewlineOpen, bool NewlineClose) {
+ bool NewlineOpen, bool NewlineClose, bool OutermostTag) {
const char* TagStr = 0;
@@ -65,13 +65,27 @@
std::ostringstream os;
os << '<' << TagStr << '>';
if (NewlineOpen) os << '\n';
- R.InsertTextAfter(B, os.str().c_str(), os.str().size());
+
+ const char* s = os.str().c_str();
+ unsigned n = os.str().size();
+
+ if (OutermostTag)
+ R.InsertTextBefore(B, s, n);
+ else
+ R.InsertTextAfter(B, s, n);
}
{ // Generate the closing tag.
std::ostringstream os;
os << "</" << TagStr << '>';
if (NewlineClose) os << '\n';
- R.InsertTextBefore(E, os.str().c_str(), os.str().size());
+
+ const char* s = os.str().c_str();
+ unsigned n = os.str().size();
+
+ if (OutermostTag)
+ R.InsertTextAfter(E, s, n);
+ else
+ R.InsertTextBefore(E, s, n);
}
}