Refactor Parser

This commit is contained in:
Guille Gonzalez
2026-01-02 17:21:00 +01:00
parent e66eeb4564
commit 539942fffe
2 changed files with 1353 additions and 33 deletions

View File

@@ -458,13 +458,6 @@ extension Math {
"Vmatrix*": ["Vert", "Vert"], "Vmatrix*": ["Vert", "Vert"],
] ]
private enum ParseErrorCode: Int {
case invalidEnv = 8
case invalidNumColumns = 12
}
private static let parseErrorDomain = "ParseError"
static func fontStyle(named fontName: String) -> Atom.FontStyle? { static func fontStyle(named fontName: String) -> Atom.FontStyle? {
fontStyles[fontName] fontStyles[fontName]
} }
@@ -659,7 +652,7 @@ extension Math {
withEnvironment env: String?, withEnvironment env: String?,
alignment: Table.ColumnAlignment? = nil, alignment: Table.ColumnAlignment? = nil,
rows: [[AtomList]], rows: [[AtomList]],
error: inout NSError? error: inout ParserError?
) -> Atom? { ) -> Atom? {
let table = Table(environment: env ?? "") let table = Table(environment: env ?? "")
@@ -713,11 +706,7 @@ extension Math {
if table.numberOfColumns != 2 { if table.numberOfColumns != 2 {
let message = "\(env) environment can only have 2 columns" let message = "\(env) environment can only have 2 columns"
if error == nil { if error == nil {
error = NSError( error = ParserError(code: .invalidNumberOfColumns, message: message)
domain: parseErrorDomain,
code: ParseErrorCode.invalidNumColumns.rawValue,
userInfo: [NSLocalizedDescriptionKey: message]
)
} }
return nil return nil
} }
@@ -741,11 +730,7 @@ extension Math {
if table.numberOfColumns != 1 { if table.numberOfColumns != 1 {
let message = "\(env) environment can only have 1 column" let message = "\(env) environment can only have 1 column"
if error == nil { if error == nil {
error = NSError( error = ParserError(code: .invalidNumberOfColumns, message: message)
domain: parseErrorDomain,
code: ParseErrorCode.invalidNumColumns.rawValue,
userInfo: [NSLocalizedDescriptionKey: message]
)
} }
return nil return nil
} }
@@ -760,11 +745,7 @@ extension Math {
if table.numberOfColumns != 3 { if table.numberOfColumns != 3 {
let message = "\(env) environment can only have 3 columns" let message = "\(env) environment can only have 3 columns"
if error == nil { if error == nil {
error = NSError( error = ParserError(code: .invalidNumberOfColumns, message: message)
domain: parseErrorDomain,
code: ParseErrorCode.invalidNumColumns.rawValue,
userInfo: [NSLocalizedDescriptionKey: message]
)
} }
return nil return nil
} }
@@ -781,11 +762,7 @@ extension Math {
if table.numberOfColumns != 1 && table.numberOfColumns != 2 { if table.numberOfColumns != 1 && table.numberOfColumns != 2 {
let message = "cases environment can have 1 or 2 columns" let message = "cases environment can have 1 or 2 columns"
if error == nil { if error == nil {
error = NSError( error = ParserError(code: .invalidNumberOfColumns, message: message)
domain: parseErrorDomain,
code: ParseErrorCode.invalidNumColumns.rawValue,
userInfo: [NSLocalizedDescriptionKey: message]
)
} }
return nil return nil
} }
@@ -815,11 +792,7 @@ extension Math {
return inner return inner
} else { } else {
let message = "Unknown environment \(env)" let message = "Unknown environment \(env)"
error = NSError( error = ParserError(code: .invalidEnvironment, message: message)
domain: parseErrorDomain,
code: ParseErrorCode.invalidEnv.rawValue,
userInfo: [NSLocalizedDescriptionKey: message]
)
return nil return nil
} }
} }

File diff suppressed because it is too large Load Diff