Fixed some finalization issues.
This commit is contained in:
@@ -195,13 +195,9 @@ public class MTMathAtom: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public var finalized: MTMathAtom {
|
public var finalized: MTMathAtom {
|
||||||
let finalized = self
|
let finalized : MTMathAtom = self.copy()
|
||||||
if finalized.superScript != nil {
|
finalized.superScript = finalized.superScript?.finalized
|
||||||
finalized.superScript = finalized.superScript!.finalized
|
finalized.subScript = finalized.subScript?.finalized
|
||||||
}
|
|
||||||
if finalized.subScript != nil {
|
|
||||||
finalized.subScript = finalized.subScript!.finalized
|
|
||||||
}
|
|
||||||
return finalized
|
return finalized
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,10 +302,10 @@ public class MTFraction: MTMathAtom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override public var finalized: MTMathAtom {
|
override public var finalized: MTMathAtom {
|
||||||
let finalized: MTFraction = super.finalized as! MTFraction
|
let newFrac = super.finalized as! MTFraction
|
||||||
finalized.numerator = finalized.numerator?.finalized
|
newFrac.numerator = newFrac.numerator?.finalized
|
||||||
finalized.denominator = finalized.denominator?.finalized
|
newFrac.denominator = newFrac.denominator?.finalized
|
||||||
return finalized
|
return newFrac
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -359,12 +355,10 @@ public class MTRadical: MTMathAtom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override public var finalized: MTMathAtom {
|
override public var finalized: MTMathAtom {
|
||||||
let finalized: MTRadical = super.finalized as! MTRadical
|
let newRad = super.finalized as! MTRadical
|
||||||
|
newRad.radicand = newRad.radicand?.finalized
|
||||||
finalized.radicand = finalized.radicand?.finalized
|
newRad.degree = newRad.degree?.finalized
|
||||||
finalized.degree = finalized.degree?.finalized
|
return newRad
|
||||||
|
|
||||||
return finalized
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -442,9 +436,9 @@ public class MTInner: MTMathAtom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override public var finalized: MTMathAtom {
|
override public var finalized: MTMathAtom {
|
||||||
let finalized: MTInner = super.finalized as! MTInner
|
let newInner = super.finalized as! MTInner
|
||||||
finalized.innerList = finalized.innerList?.finalized
|
newInner.innerList = newInner.innerList?.finalized
|
||||||
return finalized
|
return newInner
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -454,15 +448,15 @@ public class MTOverLine: MTMathAtom {
|
|||||||
public var innerList: MTMathList?
|
public var innerList: MTMathList?
|
||||||
|
|
||||||
override public var finalized: MTMathAtom {
|
override public var finalized: MTMathAtom {
|
||||||
let finalized: MTOverLine = super.finalized as! MTOverLine
|
let newOverline = MTOverLine(self)
|
||||||
finalized.innerList = finalized.innerList?.finalized
|
newOverline.innerList = newOverline.innerList?.finalized
|
||||||
return finalized
|
return newOverline
|
||||||
}
|
}
|
||||||
|
|
||||||
init(_ over: MTOverLine?) {
|
init(_ over: MTOverLine?) {
|
||||||
super.init(over)
|
super.init(over)
|
||||||
self.type = .overline
|
self.type = .overline
|
||||||
self.innerList = MTMathList(self.innerList)
|
self.innerList = MTMathList(over!.innerList)
|
||||||
}
|
}
|
||||||
|
|
||||||
override init() {
|
override init() {
|
||||||
@@ -477,9 +471,9 @@ public class MTUnderLine: MTMathAtom {
|
|||||||
public var innerList: MTMathList?
|
public var innerList: MTMathList?
|
||||||
|
|
||||||
override public var finalized: MTMathAtom {
|
override public var finalized: MTMathAtom {
|
||||||
let finalized: MTUnderLine = super.finalized as! MTUnderLine
|
let newUnderline = super.finalized as! MTUnderLine
|
||||||
finalized.innerList = finalized.innerList?.finalized
|
newUnderline.innerList = newUnderline.innerList?.finalized
|
||||||
return finalized
|
return newUnderline
|
||||||
}
|
}
|
||||||
|
|
||||||
init(_ under: MTUnderLine?) {
|
init(_ under: MTUnderLine?) {
|
||||||
@@ -500,9 +494,9 @@ public class MTAccent: MTMathAtom {
|
|||||||
public var innerList: MTMathList?
|
public var innerList: MTMathList?
|
||||||
|
|
||||||
override public var finalized: MTMathAtom {
|
override public var finalized: MTMathAtom {
|
||||||
let finalized: MTAccent = super.finalized as! MTAccent
|
let newAccent = super.finalized as! MTAccent
|
||||||
finalized.innerList = finalized.innerList?.finalized
|
newAccent.innerList = newAccent.innerList?.finalized
|
||||||
return finalized
|
return newAccent
|
||||||
}
|
}
|
||||||
|
|
||||||
init(_ accent: MTAccent?) {
|
init(_ accent: MTAccent?) {
|
||||||
@@ -592,6 +586,12 @@ public class MTMathColor: MTMathAtom {
|
|||||||
public override var string: String {
|
public override var string: String {
|
||||||
"\\color{\(self.colorString)}{\(self.innerList!.string)}"
|
"\\color{\(self.colorString)}{\(self.innerList!.string)}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override public var finalized: MTMathAtom {
|
||||||
|
let newColor = super.finalized as! MTMathColor
|
||||||
|
newColor.innerList = newColor.innerList?.finalized
|
||||||
|
return newColor
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - MTMathColorbox
|
// MARK: - MTMathColorbox
|
||||||
@@ -615,6 +615,12 @@ public class MTMathColorbox: MTMathAtom {
|
|||||||
public override var string: String {
|
public override var string: String {
|
||||||
"\\colorbox{\(self.colorString)}{\(self.innerList!.string)}"
|
"\\colorbox{\(self.colorString)}{\(self.innerList!.string)}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override public var finalized: MTMathAtom {
|
||||||
|
let newColor = super.finalized as! MTMathColorbox
|
||||||
|
newColor.innerList = newColor.innerList?.finalized
|
||||||
|
return newColor
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum MTColumnAlignment {
|
public enum MTColumnAlignment {
|
||||||
@@ -634,15 +640,13 @@ public class MTMathTable: MTMathAtom {
|
|||||||
public var interRowAdditionalSpacing: CGFloat = 0
|
public var interRowAdditionalSpacing: CGFloat = 0
|
||||||
|
|
||||||
override public var finalized: MTMathAtom {
|
override public var finalized: MTMathAtom {
|
||||||
let finalized: MTMathTable = super.finalized as! MTMathTable
|
let table = super.finalized as! MTMathTable
|
||||||
|
for var row in table.cells {
|
||||||
for var row in finalized.cells {
|
|
||||||
for i in 0..<row.count {
|
for i in 0..<row.count {
|
||||||
row[i] = row[i].finalized
|
row[i] = row[i].finalized
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return table
|
||||||
return finalized
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init(environment: String?) {
|
init(environment: String?) {
|
||||||
@@ -752,7 +756,7 @@ public class MTMathList : NSObject {
|
|||||||
|
|
||||||
switch newNode.type {
|
switch newNode.type {
|
||||||
case .binaryOperator:
|
case .binaryOperator:
|
||||||
if prevNode == nil || prevNode!.isNotBinaryOperator() {
|
if isNotBinaryOperator(prevNode) {
|
||||||
newNode.type = .unaryOperator
|
newNode.type = .unaryOperator
|
||||||
}
|
}
|
||||||
case .relation, .punctuation, .close:
|
case .relation, .punctuation, .close:
|
||||||
@@ -762,21 +766,16 @@ public class MTMathList : NSObject {
|
|||||||
case .number:
|
case .number:
|
||||||
if prevNode != nil && prevNode!.type == .number && prevNode!.subScript == nil && prevNode!.superScript == nil {
|
if prevNode != nil && prevNode!.type == .number && prevNode!.subScript == nil && prevNode!.superScript == nil {
|
||||||
prevNode!.fuse(with: newNode)
|
prevNode!.fuse(with: newNode)
|
||||||
continue
|
continue // skip the current node, we are done here.
|
||||||
}
|
}
|
||||||
default: break
|
default: break
|
||||||
}
|
}
|
||||||
|
|
||||||
finalizedList.add(newNode)
|
finalizedList.add(newNode)
|
||||||
prevNode = newNode
|
prevNode = newNode
|
||||||
}
|
}
|
||||||
|
|
||||||
if prevNode != nil && prevNode!.type == .binaryOperator {
|
if prevNode != nil && prevNode!.type == .binaryOperator {
|
||||||
prevNode!.type = .unaryOperator
|
prevNode!.type = .unaryOperator
|
||||||
finalizedList.removeLastAtom()
|
|
||||||
finalizedList.add(prevNode)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalizedList
|
return finalizedList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user