Files
swiftui-math/Sources/SwiftUIMath/Internal/Syntax/Atoms/Radical.swift
2026-01-04 07:01:24 +01:00

46 lines
1.0 KiB
Swift

import Foundation
extension Math {
final class Radical: Atom {
var radicand: AtomList?
var degree: AtomList?
override var description: String {
[
"\\sqrt",
degree.map { "[\($0)]" },
"{\(radicand?.description ?? "placeholder")}",
superscript.map { "^{\($0)}" },
`subscript`.map { "_{\($0)}" },
]
.compactMap(\.self)
.joined()
}
override var finalized: Math.Atom {
let finalized = super.finalized
if let radical = finalized as? Radical {
radical.radicand = radical.radicand?.finalized
radical.degree = radical.degree?.finalized
}
return finalized
}
init(_ radical: Radical) {
self.radicand = radical.radicand.map { AtomList($0) }
self.degree = radical.degree.map { AtomList($0) }
super.init(radical)
}
init(radicand: AtomList? = nil, degree: AtomList? = nil) {
self.radicand = radicand
self.degree = degree
super.init(type: .radical)
}
}
}