From 01c3d342f6980a69feb8df27a3454fd721d6298e Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Fri, 17 Jul 2026 11:09:02 -0500 Subject: v4.8.0: Add markdown and PDF export formats - DomainExportFormat gains .markdown and .pdf (CaseIterable, Identifiable, titled), alongside the existing text/csv/json. - Markdown reuses the existing text-export content verbatim via a line-based transform (section "Title\n----" underlines become "## Title", the leading title becomes an H1, other lines become bullets), so the two formats can never drift apart. - PDF renders that Markdown as a simple monospaced multi-page document via UIGraphicsPDFRenderer (mirrors AuditExporter's existing PDF approach; degrades to raw Markdown bytes on non-UIKit platforms). - Replaced the single/batch/tracked-domains/workflow share call sites' hand- written per-format switches with format-agnostic functions (exportSingleReportData, exportBatchReportData, exportTrackedDomainsData, exportWorkflowData) that delegate straight to DomainReportExporter, removing the now-orphaned per-format helper functions those switches used to call. --- DomainDig/WorkflowsView.swift | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) (limited to 'DomainDig/WorkflowsView.swift') diff --git a/DomainDig/WorkflowsView.swift b/DomainDig/WorkflowsView.swift index 11273c7..e1cea09 100644 --- a/DomainDig/WorkflowsView.swift +++ b/DomainDig/WorkflowsView.swift @@ -383,15 +383,8 @@ struct WorkflowDetailView: View { formatter.dateFormat = "yyyyMMdd_HHmmss" let timestamp = formatter.string(from: Date()) let filename = "\(timestamp)_workflow_\(latestSummary.workflowName.replacingOccurrences(of: " ", with: "_").lowercased()).\(format.fileExtension)" - let data: Data - - switch format { - case .text: - data = Data(viewModel.exportWorkflowText(summary: latestSummary, changedOnly: changedOnly).utf8) - case .csv: - data = Data(viewModel.exportWorkflowCSV(summary: latestSummary, changedOnly: changedOnly).utf8) - case .json: - data = viewModel.exportWorkflowJSONData(summary: latestSummary, changedOnly: changedOnly) ?? Data("[]".utf8) + guard let data = viewModel.exportWorkflowData(summary: latestSummary, changedOnly: changedOnly, format: format) else { + return } ExportPresenter.share(filename: filename, data: data) @@ -586,15 +579,8 @@ struct WorkflowRunSummaryView: View { formatter.dateFormat = "yyyyMMdd_HHmmss" let timestamp = formatter.string(from: Date()) let filename = "\(timestamp)_workflow_summary.\(format.fileExtension)" - let data: Data - - switch format { - case .text: - data = Data(viewModel.exportWorkflowText(summary: summary, changedOnly: changedOnly).utf8) - case .csv: - data = Data(viewModel.exportWorkflowCSV(summary: summary, changedOnly: changedOnly).utf8) - case .json: - data = viewModel.exportWorkflowJSONData(summary: summary, changedOnly: changedOnly) ?? Data("[]".utf8) + guard let data = viewModel.exportWorkflowData(summary: summary, changedOnly: changedOnly, format: format) else { + return } ExportPresenter.share(filename: filename, data: data) -- cgit v1.2.3