Files
swift-cli-doc/Sources/CliDoc/Node.swift
2024-12-02 17:04:28 -05:00

28 lines
495 B
Swift

public protocol NodeRepresentable {
func render() -> String
}
public protocol Node: NodeRepresentable {
// swiftlint:disable type_name
associatedtype _Body: Node
typealias Body = _Body
// swiftlint:enable type_name
@NodeBuilder
var body: Body { get }
}
public extension Node {
func render() -> String {
body.render()
}
}
extension String: NodeRepresentable {
public func render() -> String { self }
}
extension String: Node {
public var body: some Node { self }
}