Re-arrange source code and tests
This commit is contained in:
68
Sources/SwiftUIMath/Internal/Syntax/Atoms/Inner.swift
Normal file
68
Sources/SwiftUIMath/Internal/Syntax/Atoms/Inner.swift
Normal file
@@ -0,0 +1,68 @@
|
||||
import Foundation
|
||||
|
||||
extension Math {
|
||||
final class Inner: Atom {
|
||||
var innerList: AtomList?
|
||||
|
||||
var leftBoundary: Atom? {
|
||||
didSet {
|
||||
if let leftBoundary, leftBoundary.type != .boundary {
|
||||
assertionFailure("Left boundary must be of type 'boundary'")
|
||||
self.leftBoundary = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var rightBoundary: Atom? {
|
||||
didSet {
|
||||
if let rightBoundary, rightBoundary.type != .boundary {
|
||||
assertionFailure("Right boundary must be of type 'boundary'")
|
||||
self.rightBoundary = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override var description: String {
|
||||
[
|
||||
"\\inner",
|
||||
leftBoundary.map { "[\($0.nucleus)]" },
|
||||
innerList.map { "{\($0)}" },
|
||||
rightBoundary.map { "[\($0.nucleus)]" },
|
||||
superscript.map { "^{\($0)}" },
|
||||
`subscript`.map { "_{\($0)}" },
|
||||
]
|
||||
.compactMap(\.self)
|
||||
.joined()
|
||||
}
|
||||
|
||||
override var finalized: Math.Atom {
|
||||
let finalized = super.finalized
|
||||
|
||||
if let inner = finalized as? Inner {
|
||||
inner.innerList = inner.innerList?.finalized
|
||||
}
|
||||
|
||||
return finalized
|
||||
}
|
||||
|
||||
init(_ inner: Inner) {
|
||||
self.innerList = inner.innerList.map { AtomList($0) }
|
||||
self.leftBoundary = inner.leftBoundary.map { $0.copy() }
|
||||
self.rightBoundary = inner.rightBoundary.map { $0.copy() }
|
||||
|
||||
super.init(inner)
|
||||
}
|
||||
|
||||
init(
|
||||
innerList: AtomList? = nil,
|
||||
leftBoundary: Atom? = nil,
|
||||
rightBoundary: Atom? = nil
|
||||
) {
|
||||
self.innerList = innerList
|
||||
self.leftBoundary = leftBoundary
|
||||
self.rightBoundary = rightBoundary
|
||||
|
||||
super.init(type: .inner)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user