diff options
author | Jon Skeet <jonskeet@google.com> | 2015-11-06 18:38:16 +0000 |
---|---|---|
committer | Jon Skeet <jonskeet@google.com> | 2015-11-06 18:38:16 +0000 |
commit | f4f601bd477e01c98d95dece5a694107205a8134 (patch) | |
tree | c296d0fe4bb4a1e568c5d490f7c9c71bfc778ddb | |
parent | ffe25c76eac55347d74bef508410f90f01f1db85 (diff) | |
download | protobuf-f4f601bd477e01c98d95dece5a694107205a8134.tar.gz protobuf-f4f601bd477e01c98d95dece5a694107205a8134.tar.bz2 protobuf-f4f601bd477e01c98d95dece5a694107205a8134.zip |
Stop removing all blank lines in doc comments.
This fixes issue #832.
Generated code changes in next commit.
-rw-r--r-- | src/google/protobuf/compiler/csharp/csharp_doc_comment.cc | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc b/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc index 9ad2cbb5..587e0222 100644 --- a/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc +++ b/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc @@ -56,10 +56,26 @@ void WriteDocCommentBodyImpl(io::Printer* printer, SourceLocation location) { // node of a summary element, not part of an attribute. comments = StringReplace(comments, "&", "&", true); comments = StringReplace(comments, "<", "<", true); - vector<string> lines = Split(comments, "\n"); + vector<string> lines = Split(comments, "\n", false /* skip_empty */); + // TODO: We really should work out which part to put in the summary and which to put in the remarks... + // but that needs to be part of a bigger effort to understand the markdown better anyway. printer->Print("/// <summary>\n"); + bool last_was_empty = false; + // We squash multiple blank lines down to one, and remove any trailing blank lines. We need + // to preserve the blank lines themselves, as this is relevant in the markdown. + // Note that we can't remove leading or trailing whitespace as *that's* relevant in markdown too. + // (We don't skip "just whitespace" lines, either.) for (std::vector<string>::iterator it = lines.begin(); it != lines.end(); ++it) { - printer->Print("/// $line$\n", "line", *it); + string line = *it; + if (line.empty()) { + last_was_empty = true; + } else { + if (last_was_empty) { + printer->Print("///\n"); + } + last_was_empty = false; + printer->Print("/// $line$\n", "line", *it); + } } printer->Print("/// </summary>\n"); } |