Add array environment 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:31:52 +00:00
committed by GitHub
parent 8201156af8
commit f8f668f649
4 changed files with 188 additions and 6 deletions

View File

@@ -658,10 +658,12 @@ extension Math {
static func table(
withEnvironment env: String?,
alignment: Table.ColumnAlignment? = nil,
columnAlignments: [Table.ColumnAlignment]? = nil,
columnFormat: String? = nil,
rows: [[AtomList]],
error: inout ParserError?
) -> Atom? {
let table = Table(environment: env ?? "")
let table = Table(environment: env ?? "", columnFormat: columnFormat)
for i in 0..<rows.count {
let row = rows[i]
@@ -709,6 +711,38 @@ extension Math {
} else {
return table
}
} else if env == "array" {
guard let columnAlignments, !columnAlignments.isEmpty else {
let message = "array environment requires at least 1 column alignment"
if error == nil {
error = ParserError(code: .invalidEnvironment, message: message)
}
return nil
}
if table.numberOfColumns > columnAlignments.count {
let message = "array environment has more columns than alignment specifiers"
if error == nil {
error = ParserError(code: .invalidNumberOfColumns, message: message)
}
return nil
}
table.interRowAdditionalSpacing = 0
table.interColumnSpacing = 18
let style = Style(level: .text)
for i in 0..<table.cells.count {
for j in 0..<table.cells[i].count {
table.cells[i][j].insert(style, at: 0)
}
}
for (column, alignment) in columnAlignments.enumerated() {
table.setAlignment(alignment, forColumn: column)
}
return table
} else if env == "eqalign" || env == "split" || env == "aligned" {
if table.numberOfColumns != 2 {
let message = "\(env) environment can only have 2 columns"