in Sources/SwiftFormatPrettyPrint/Comment.swift [63:87]
init(kind: Kind, text: String) {
self.kind = kind
switch kind {
case .line, .docLine:
self.text = [text.trimmingTrailingWhitespace()]
self.text[0].removeFirst(kind.prefixLength)
self.length = self.text.reduce(0, { $0 + $1.count + kind.prefixLength + 1 })
case .block, .docBlock:
var fulltext: String = text
fulltext.removeFirst(kind.prefixLength)
fulltext.removeLast(2)
let lines = fulltext.split(separator: "\n", omittingEmptySubsequences: false)
// The last line in a block style comment contains the "*/" pattern to end the comment. The
// trailing space(s) need to be kept in that line to have space between text and "*/".
var trimmedLines = lines.dropLast().map({ $0.trimmingTrailingWhitespace() })
if let lastLine = lines.last {
trimmedLines.append(String(lastLine))
}
self.text = trimmedLines
self.length = self.text.reduce(0, { $0 + $1.count }) + kind.prefixLength + 3
}
}