| // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// Return the summary of the given DartDoc [string], which is the content of |
| /// the lines before the first blank line. |
| String? getDartDocSummary(String? string) { |
| if (string == null) { |
| return null; |
| } |
| var lines = string.split('\n'); |
| var buffer = StringBuffer(); |
| var firstLine = true; |
| for (var line in lines) { |
| if (buffer.length != 0 && line.isEmpty) { |
| return buffer.toString(); |
| } |
| if (!firstLine) { |
| buffer.write('\n'); |
| } |
| firstLine = false; |
| buffer.write(line); |
| } |
| return buffer.toString(); |
| } |
| |
| /// Converts [string] from a DartDoc comment with slashes and stars to a plain |
| /// text representation of the comment. |
| String? removeDartDocDelimiters(String? string) { |
| if (string == null) { |
| return null; |
| } |
| // remove /** */ |
| if (string.startsWith('/**')) { |
| string = string.substring(3); |
| } |
| if (string.endsWith('*/')) { |
| string = string.substring(0, string.length - 2); |
| } |
| string = string.trim(); |
| // remove leading '* ' and '/// ' |
| var lines = string.split('\n'); |
| var buffer = StringBuffer(); |
| var firstLine = true; |
| for (var line in lines) { |
| line = line.trim(); |
| if (line.startsWith('*')) { |
| line = line.substring(1); |
| if (line.startsWith(' ')) { |
| line = line.substring(1); |
| } |
| } else if (line.startsWith('///')) { |
| line = line.substring(3); |
| if (line.startsWith(' ')) { |
| line = line.substring(1); |
| } |
| } |
| if (!firstLine) { |
| buffer.write('\n'); |
| } |
| firstLine = false; |
| buffer.write(line); |
| } |
| string = buffer.toString(); |
| // done |
| return string; |
| } |