summaryrefslogtreecommitdiff
path: root/DomainDig/ContentView.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-07-17 11:09:02 -0500
committerChristian Cleberg <[email protected]>2026-07-20 13:56:41 -0500
commit01c3d342f6980a69feb8df27a3454fd721d6298e (patch)
tree72f7758dfb38623b1f4a3b6d5cf9c9d98e9bc601 /DomainDig/ContentView.swift
parent54c151e22f8a5d4d7a9c290e79fc7626415f7083 (diff)
downloaddomain-dig-01c3d342f6980a69feb8df27a3454fd721d6298e.tar.gz
domain-dig-01c3d342f6980a69feb8df27a3454fd721d6298e.tar.bz2
domain-dig-01c3d342f6980a69feb8df27a3454fd721d6298e.zip
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.
Diffstat (limited to 'DomainDig/ContentView.swift')
-rw-r--r--DomainDig/ContentView.swift42
1 files changed, 6 insertions, 36 deletions
diff --git a/DomainDig/ContentView.swift b/DomainDig/ContentView.swift
index 30d693e..b5ec729 100644
--- a/DomainDig/ContentView.swift
+++ b/DomainDig/ContentView.swift
@@ -710,50 +710,20 @@ struct ContentView: View {
}
private func shareSingleResults(format: DomainExportFormat) {
- let (filename, data) = exportPayload(
- prefix: "domaindig_single",
- format: format,
- text: viewModel.exportText(),
- csv: viewModel.exportCSV(),
- json: viewModel.exportJSONData()
- )
- ExportPresenter.share(filename: filename, data: data)
+ guard let data = viewModel.exportSingleReportData(format: format) else { return }
+ ExportPresenter.share(filename: exportFilename(prefix: "domaindig_single", format: format), data: data)
}
private func shareBatchResults(format: DomainExportFormat) {
- let (filename, data) = exportPayload(
- prefix: "domaindig_batch",
- format: format,
- text: viewModel.exportBatchText(),
- csv: viewModel.exportBatchCSV(),
- json: viewModel.exportBatchJSONData()
- )
- ExportPresenter.share(filename: filename, data: data)
+ guard let data = viewModel.exportBatchReportData(format: format) else { return }
+ ExportPresenter.share(filename: exportFilename(prefix: "domaindig_batch", format: format), data: data)
}
- private func exportPayload(
- prefix: String,
- format: DomainExportFormat,
- text: String,
- csv: String,
- json: Data?
- ) -> (String, Data) {
+ private func exportFilename(prefix: String, format: DomainExportFormat) -> String {
let formatter = DateFormatter()
formatter.dateFormat = "yyyyMMdd_HHmmss"
let timestamp = formatter.string(from: Date())
- let filename = "\(timestamp)_\(prefix).\(format.fileExtension)"
- let data: Data
-
- switch format {
- case .text:
- data = Data(text.utf8)
- case .csv:
- data = Data(csv.utf8)
- case .json:
- data = json ?? Data("[]".utf8)
- }
-
- return (filename, data)
+ return "\(timestamp)_\(prefix).\(format.fileExtension)"
}
private var defaultCollapsedSections: Set<ResultSection> {