feat: Working on node builder
This commit is contained in:
38
Sources/CliDoc/Nodes/Group.swift
Normal file
38
Sources/CliDoc/Nodes/Group.swift
Normal file
@@ -0,0 +1,38 @@
|
||||
|
||||
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: AnyNode = Space().eraseToAnyNode(),
|
||||
@NodeBuilder _ build: () -> any NodeRepresentable
|
||||
) {
|
||||
self.init(separator: separator, node: build())
|
||||
}
|
||||
|
||||
@inlinable
|
||||
public func render() -> String {
|
||||
node.render()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user