Generate pages, image descriptions
This commit is contained in:
72
CHDataManagement/Model/Types/FileType.swift
Normal file
72
CHDataManagement/Model/Types/FileType.swift
Normal file
@@ -0,0 +1,72 @@
|
||||
import Foundation
|
||||
|
||||
enum FileType {
|
||||
case image(ImageType)
|
||||
|
||||
case file(String)
|
||||
case video(VideoType)
|
||||
case resource(String)
|
||||
|
||||
|
||||
init(fileExtension: String?) {
|
||||
guard let ext = fileExtension?.lowercased() else {
|
||||
self = .file("")
|
||||
return
|
||||
}
|
||||
switch ext {
|
||||
case "jpg", "jpeg":
|
||||
self = .image(.jpg)
|
||||
case "png":
|
||||
self = .image(.png)
|
||||
case "avif":
|
||||
self = .image(.avif)
|
||||
case "webp":
|
||||
self = .image(.webp)
|
||||
case "gif":
|
||||
self = .image(.gif)
|
||||
case "html", "stl", "f3d", "step", "f3z", "zip", "json", "conf", "css", "js", "cpp", "cddx", "svg", "glb", "mp3", "pdf", "swift":
|
||||
self = .file(ext)
|
||||
case "mp4":
|
||||
self = .video(.mp4)
|
||||
case "m4v":
|
||||
self = .video(.m4v)
|
||||
case "webm":
|
||||
self = .video(.webm)
|
||||
case "key", "psd":
|
||||
self = .resource(ext)
|
||||
default:
|
||||
print("Unhandled file type: \(ext)")
|
||||
self = .resource(ext)
|
||||
}
|
||||
}
|
||||
|
||||
var fileExtension: String {
|
||||
switch self {
|
||||
case .image(let imageType): return imageType.fileExtension
|
||||
case .video(let videoType): return videoType.fileExtension
|
||||
default:
|
||||
return "" // TODO: Fix
|
||||
}
|
||||
}
|
||||
|
||||
var isImage: Bool {
|
||||
if case .image = self {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
var isVideo: Bool {
|
||||
if case .video = self {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
var videoType: VideoType? {
|
||||
if case .video(let videoType) = self {
|
||||
return videoType
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
53
CHDataManagement/Model/Types/ImageType.swift
Normal file
53
CHDataManagement/Model/Types/ImageType.swift
Normal file
@@ -0,0 +1,53 @@
|
||||
import Foundation
|
||||
import AppKit
|
||||
|
||||
enum ImageType {
|
||||
case jpg
|
||||
case png
|
||||
case avif
|
||||
case webp
|
||||
case gif
|
||||
|
||||
var fileExtension: String {
|
||||
switch self {
|
||||
case .jpg: return "jpg"
|
||||
case .png: return "png"
|
||||
case .avif: return "avif"
|
||||
case .webp: return "webp"
|
||||
case .gif: return "gif"
|
||||
}
|
||||
}
|
||||
|
||||
var fileType: NSBitmapImageRep.FileType {
|
||||
switch self {
|
||||
case .jpg:
|
||||
return .jpeg
|
||||
case .png, .avif, .webp:
|
||||
return .png
|
||||
case .gif:
|
||||
return .gif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ImageType: CaseIterable {
|
||||
|
||||
}
|
||||
|
||||
extension ImageType {
|
||||
|
||||
init?(fileExtension: String) {
|
||||
switch fileExtension {
|
||||
case "jpg", "jpeg":
|
||||
self = .jpg
|
||||
case "png":
|
||||
self = .png
|
||||
case "avif":
|
||||
self = .avif
|
||||
case "webp":
|
||||
self = .webp
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
36
CHDataManagement/Model/Types/VideoType.swift
Normal file
36
CHDataManagement/Model/Types/VideoType.swift
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
enum VideoType: String {
|
||||
|
||||
case mp4
|
||||
|
||||
case m4v
|
||||
|
||||
case webm
|
||||
}
|
||||
|
||||
extension VideoType {
|
||||
|
||||
var fileExtension: String {
|
||||
switch self {
|
||||
case .mp4:
|
||||
return "mp4"
|
||||
case .m4v:
|
||||
return "m4v"
|
||||
case .webm:
|
||||
return "webm"
|
||||
}
|
||||
}
|
||||
|
||||
var htmlType: String {
|
||||
switch self {
|
||||
case .mp4, .m4v:
|
||||
return "video/mp4"
|
||||
case .webm:
|
||||
return "video/webm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension VideoType: CaseIterable {
|
||||
|
||||
}
|
Reference in New Issue
Block a user