CHGenerator/WebsiteGenerator/Generators/ThumbnailListGenerator.swift

39 lines
1.3 KiB
Swift
Raw Normal View History

2022-08-16 10:39:05 +02:00
import Foundation
struct ThumbnailListGenerator {
private let factory: TemplateFactory
2022-08-16 12:26:45 +02:00
let files: FileProcessor
2022-08-16 10:39:05 +02:00
2022-08-16 12:26:45 +02:00
init(factory: TemplateFactory, files: FileProcessor) {
2022-08-16 10:39:05 +02:00
self.factory = factory
2022-08-16 12:26:45 +02:00
self.files = files
2022-08-16 10:39:05 +02:00
}
func generateContent(items: [ThumbnailInfo], style: ThumbnailStyle) throws -> String {
try items.map { try itemContent($0, style: style) }
.joined(separator: "\n")
}
private func itemContent(_ thumbnail: ThumbnailInfo, style: ThumbnailStyle) throws -> String {
var content = [ThumbnailKey : String]()
content[.url] = thumbnail.url.unwrapped { "href=\"\($0)\"" }
content[.image] = thumbnail.imageHtmlUrl
content[.title] = thumbnail.title
content[.image2x] = thumbnail.imageHtmlUrl.insert("@2x", beforeLast: ".")
content[.corner] = thumbnail.cornerText.unwrapped {
factory.largeThumbnail.makeCorner(text: $0)
}
2022-08-16 12:26:45 +02:00
try files.requireImage(
2022-08-16 10:39:05 +02:00
source: thumbnail.imageFilePath,
destination: thumbnail.imageFilePath,
width: style.width,
desiredHeight: style.height,
createDoubleVersion: true)
return try factory.thumbnail(style: style).generate(content, shouldIndent: false)
}
}