Files
swift-hpa/Sources/CliDoc/Modifiers/Style.swift

42 lines
960 B
Swift

import Rainbow
public extension NodeRepresentable {
@inlinable
func style(_ styles: Style...) -> any NodeRepresentable {
modifier(StyleModifier(styles: styles))
}
@inlinable
func style(_ styles: [Style]) -> any NodeRepresentable {
modifier(StyleModifier(styles: styles))
}
}
public extension NodeModifier {
@inlinable
static func style(_ styles: Style...) -> Self where Self == AnyNodeModifier {
.init(StyleModifier(styles: styles))
}
@inlinable
static func style(_ styles: [Style]) -> Self where Self == AnyNodeModifier {
.init(StyleModifier(styles: styles))
}
}
@usableFromInline
struct StyleModifier: NodeModifier, @unchecked Sendable {
@usableFromInline
let styles: [Style]
@usableFromInline
init(styles: [Style]) {
self.styles = styles
}
@usableFromInline
func render(_ node: any NodeRepresentable) -> any NodeRepresentable {
styles.reduce(node.render()) { $0.applyingStyle($1) }
}
}