import Common import Foundation extension [AeroObj] { @MainActor func formatToJson(_ format: [InterToken], ignoreRightPaddingVar: Bool) -> Result { var list: [[String: Primitive]] = [] for richObj in self { var rawObj: [String: Primitive] = [:] for token in format { switch token { case .interVar(.plainInterVar(.rightPadding)) where ignoreRightPaddingVar: break case .literal: break // should be spaces case .interVar(let varName): switch varName.expandFormatVar(obj: richObj) { case .success(let expanded): rawObj[varName.rawValue] = expanded case .failure(let error): return .failure(error.description) } } } list.append(rawObj) } return JSONEncoder.aeroSpaceDefault.encodeToString(list).toResult("Can't encode '\(list)' to JSON") } }