| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /*
- * Copyright 2024, gRPC Authors All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package enum Docs {
- package static func suffix(_ header: String, withDocs footer: String) -> String {
- if footer.isEmpty {
- return header
- } else {
- let docs = """
- ///
- \(Self.inlineDocsAsNote(footer))
- """
- return header + "\n" + docs
- }
- }
- package static func interposeDocs(
- _ docs: String,
- between header: String,
- and footer: String
- ) -> String {
- let middle: String
- if docs.isEmpty {
- middle = """
- ///
- """
- } else {
- middle = """
- ///
- \(Self.inlineDocsAsNote(docs))
- ///
- """
- }
- return header + "\n" + middle + "\n" + footer
- }
- private static func inlineDocsAsNote(_ docs: String) -> String {
- let header = """
- /// > Source IDL Documentation:
- /// >
- """
- let body = docs.split(separator: "\n").map { line in
- var line = "/// > " + line.dropFirst(4)
- line.trimPrefix(while: { $0.isWhitespace })
- return String(line.drop(while: { $0.isWhitespace }))
- }.joined(separator: "\n")
- return header + "\n" + body
- }
- }
|