"Escape" certain characters
Added EscapeString() to convert certain characters into XML escape (&xxx;) sequences
BUG=708705
Review-Url: https://codereview.chromium.org/2803613003
Cr-Original-Commit-Position: refs/heads/master@{#462966}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 7dbbea4c0d8e6f34a12ab7ce3b4a92d36e25d2f8
diff --git a/tools/gn/visual_studio_writer.cc b/tools/gn/visual_studio_writer.cc
index 8a8cf52..76ebc56 100644
--- a/tools/gn/visual_studio_writer.cc
+++ b/tools/gn/visual_studio_writer.cc
@@ -37,9 +37,41 @@
namespace {
+std::string EscapeString(const std::string& value) {
+ std::string result;
+ for (char c : value) {
+ switch (c) {
+ case '\n':
+ result += " ";
+ break;
+ case '\r':
+ result += " ";
+ break;
+ case '\t':
+ result += "	";
+ break;
+ case '"':
+ result += """;
+ break;
+ case '<':
+ result += "<";
+ break;
+ case '>':
+ result += ">";
+ break;
+ case '&':
+ result += "&";
+ break;
+ default:
+ result += c;
+ }
+ }
+ return result;
+}
+
struct SemicolonSeparatedWriter {
void operator()(const std::string& value, std::ostream& out) const {
- out << value + ';';
+ out << EscapeString(value) + ';';
}
};