40 lines
934 B
Swift
40 lines
934 B
Swift
//
|
|
// FirebonkDocument.swift
|
|
// Firebonk
|
|
//
|
|
// Created by Patrick Müller on 12.01.23.
|
|
//
|
|
|
|
import SwiftUI
|
|
import UniformTypeIdentifiers
|
|
|
|
extension UTType {
|
|
static var exampleText: UTType {
|
|
UTType(importedAs: "com.example.plain-text")
|
|
}
|
|
}
|
|
|
|
struct FirebonkDocument: FileDocument {
|
|
var text: String
|
|
|
|
init(text: String = "Hello, world!") {
|
|
self.text = text
|
|
}
|
|
|
|
static var readableContentTypes: [UTType] { [.exampleText] }
|
|
|
|
init(configuration: ReadConfiguration) throws {
|
|
guard let data = configuration.file.regularFileContents,
|
|
let string = String(data: data, encoding: .utf8)
|
|
else {
|
|
throw CocoaError(.fileReadCorruptFile)
|
|
}
|
|
text = string
|
|
}
|
|
|
|
func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
|
|
let data = text.data(using: .utf8)!
|
|
return .init(regularFileWithContents: data)
|
|
}
|
|
}
|