From 82be1cd96104ef1c89f0e0c54f3e1575f538d568 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Apr 2026 15:34:19 +0000 Subject: [PATCH] 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> --- .../SwiftUIMath/Internal/Syntax/Parser.swift | 66 +++++++++---------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/Sources/SwiftUIMath/Internal/Syntax/Parser.swift b/Sources/SwiftUIMath/Internal/Syntax/Parser.swift index 0ee2f4e..4babbcd 100644 --- a/Sources/SwiftUIMath/Internal/Syntax/Parser.swift +++ b/Sources/SwiftUIMath/Internal/Syntax/Parser.swift @@ -809,27 +809,17 @@ extension Math { if env == nil { return nil } - var alignment: Table.ColumnAlignment? = nil - var columnAlignments: [Table.ColumnAlignment]? = nil - var columnFormat: String? = nil - if let env { - if env.hasSuffix("*") { - alignment = self.readOptionalAlignment() - if self.error != nil { - return nil - } - } else if env == "array" { - (columnAlignments, columnFormat) = self.readArrayColumnFormat() - if self.error != nil { - return nil - } - } + guard let env else { + return nil + } + guard let environmentOptions = self.readEnvironmentOptions(for: env) else { + return nil } let table = self.buildTable( environment: env, - alignment: alignment, - columnAlignments: columnAlignments, - columnFormat: columnFormat, + alignment: environmentOptions.alignment, + columnAlignments: environmentOptions.columnAlignments, + columnFormat: environmentOptions.columnFormat, firstList: nil, isRow: false ) @@ -1189,27 +1179,15 @@ extension Math { return under } else if command == "begin" { if let env = self.readEnvironment() { - // Check if this is a starred matrix environment and read optional alignment - 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 - } - } else if env == "array" { - (columnAlignments, columnFormat) = self.readArrayColumnFormat() - if self.error != nil { - return nil - } + guard let environmentOptions = self.readEnvironmentOptions(for: env) else { + return nil } let table = self.buildTable( environment: env, - alignment: alignment, - columnAlignments: columnAlignments, - columnFormat: columnFormat, + alignment: environmentOptions.alignment, + columnAlignments: environmentOptions.columnAlignments, + columnFormat: environmentOptions.columnFormat, firstList: nil, isRow: false ) @@ -1298,6 +1276,24 @@ extension Math { 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?) { guard self.expectCharacter("{") else { self.setError(.characterNotFound, message: "Missing { after \\begin{array}")