import Foundation enum StringLiteralEscaper { static func rawTripleQuotedLiteral(from content: String) -> String { let hashDelimiter = makeHashDelimiter(avoidingCollisionsIn: content) return assembleLiteral(content: content, hashDelimiter: hashDelimiter) } } private extension StringLiteralEscaper { static let tripleQuote = "\"\"\"" static func assembleLiteral(content: String, hashDelimiter: String) -> String { let opening = "\(hashDelimiter)\(tripleQuote)\n" let closing = "\n\(tripleQuote)\(hashDelimiter)" return opening + content + closing } static func makeHashDelimiter(avoidingCollisionsIn content: String) -> String { let minimumHashCount = longestHashRunFollowingTripleQuote(in: content) + 1 return String(repeating: "#", count: minimumHashCount) } static func longestHashRunFollowingTripleQuote(in content: String) -> Int { var longestRun = 0 var cursor = content.startIndex while let tripleQuoteRange = content.range(of: tripleQuote, range: cursor.. Int { var count = 0 var index = startIndex while index < content.endIndex, content[index] == "#" { count += 1 index = content.index(after: index) } return count } static func advance(from index: String.Index, in content: String) -> String.Index { content.index(after: index) } }