38 lines
795 B
Swift
38 lines
795 B
Swift
public struct Group: NodeRepresentable {
|
|
@usableFromInline
|
|
let node: any NodeRepresentable
|
|
|
|
@usableFromInline
|
|
init(
|
|
separator: AnyNode,
|
|
node: any NodeRepresentable
|
|
) {
|
|
if let many = node as? _ManyNode {
|
|
self.node = _ManyNode(many.nodes, separator: separator)
|
|
} else {
|
|
self.node = node
|
|
}
|
|
}
|
|
|
|
@inlinable
|
|
public init(
|
|
separator: any NodeRepresentable,
|
|
@NodeBuilder _ build: () -> any NodeRepresentable
|
|
) {
|
|
self.init(separator: separator.eraseToAnyNode(), node: build())
|
|
}
|
|
|
|
@inlinable
|
|
public init(
|
|
separator: String = " ",
|
|
@NodeBuilder _ build: () -> any NodeRepresentable
|
|
) {
|
|
self.init(separator: separator.eraseToAnyNode(), node: build())
|
|
}
|
|
|
|
@inlinable
|
|
public func render() -> String {
|
|
node.render()
|
|
}
|
|
}
|