Refactor environment option parsing

Agent-Logs-Url: https://github.com/wesleyel/swiftui-math/sessions/56436444-e15b-4dd0-8a70-c87df1e3dc4e

Co-authored-by: wesleyel <48174882+wesleyel@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-06 15:34:19 +00:00
committed by GitHub
parent e86cf33070
commit 82be1cd961

View File

@@ -809,27 +809,17 @@ extension Math {
if env == nil { if env == nil {
return nil return nil
} }
var alignment: Table.ColumnAlignment? = nil guard let env else {
var columnAlignments: [Table.ColumnAlignment]? = nil
var columnFormat: String? = nil
if let env {
if env.hasSuffix("*") {
alignment = self.readOptionalAlignment()
if self.error != nil {
return nil return nil
} }
} else if env == "array" { guard let environmentOptions = self.readEnvironmentOptions(for: env) else {
(columnAlignments, columnFormat) = self.readArrayColumnFormat()
if self.error != nil {
return nil return nil
} }
}
}
let table = self.buildTable( let table = self.buildTable(
environment: env, environment: env,
alignment: alignment, alignment: environmentOptions.alignment,
columnAlignments: columnAlignments, columnAlignments: environmentOptions.columnAlignments,
columnFormat: columnFormat, columnFormat: environmentOptions.columnFormat,
firstList: nil, firstList: nil,
isRow: false isRow: false
) )
@@ -1189,27 +1179,15 @@ extension Math {
return under return under
} else if command == "begin" { } else if command == "begin" {
if let env = self.readEnvironment() { if let env = self.readEnvironment() {
// Check if this is a starred matrix environment and read optional alignment guard let environmentOptions = self.readEnvironmentOptions(for: env) else {
var alignment: Table.ColumnAlignment? = nil
var columnAlignments: [Table.ColumnAlignment]? = nil
var columnFormat: String? = nil
if env.hasSuffix("*") {
alignment = self.readOptionalAlignment()
if self.error != nil {
return nil return nil
} }
} else if env == "array" {
(columnAlignments, columnFormat) = self.readArrayColumnFormat()
if self.error != nil {
return nil
}
}
let table = self.buildTable( let table = self.buildTable(
environment: env, environment: env,
alignment: alignment, alignment: environmentOptions.alignment,
columnAlignments: columnAlignments, columnAlignments: environmentOptions.columnAlignments,
columnFormat: columnFormat, columnFormat: environmentOptions.columnFormat,
firstList: nil, firstList: nil,
isRow: false isRow: false
) )
@@ -1298,6 +1276,24 @@ extension Math {
return alignment return alignment
} }
mutating func readEnvironmentOptions(for env: String) -> (
alignment: Table.ColumnAlignment?,
columnAlignments: [Table.ColumnAlignment]?,
columnFormat: String?
)? {
if env.hasSuffix("*") {
let alignment = self.readOptionalAlignment()
return self.error == nil ? (alignment, nil, nil) : nil
}
if env == "array" {
let (columnAlignments, columnFormat) = self.readArrayColumnFormat()
return self.error == nil ? (nil, columnAlignments, columnFormat) : nil
}
return (nil, nil, nil)
}
mutating func readArrayColumnFormat() -> ([Table.ColumnAlignment]?, String?) { mutating func readArrayColumnFormat() -> ([Table.ColumnAlignment]?, String?) {
guard self.expectCharacter("{") else { guard self.expectCharacter("{") else {
self.setError(.characterNotFound, message: "Missing { after \\begin{array}") self.setError(.characterNotFound, message: "Missing { after \\begin{array}")