CHGenerator/WebsiteGenerator/Generators/ThumbnailListGenerator.swift

46 lines
1.7 KiB
Swift
Raw Normal View History

2022-08-16 10:39:05 +02:00
import Foundation
struct ThumbnailListGenerator {
private let factory: TemplateFactory
init(factory: TemplateFactory) {
2022-08-16 10:39:05 +02:00
self.factory = factory
}
func generateContent(items: [Element], parent: Element, language: String, style: ThumbnailStyle) -> String {
items.map { itemContent($0, parent: parent, language: language, style: style) }
2022-08-16 10:39:05 +02:00
.joined(separator: "\n")
}
private func itemContent(_ item: Element, parent: Element, language: String, style: ThumbnailStyle) -> String {
let fullThumbnailPath = item.thumbnailFilePath(for: language)
let relativeImageUrl = parent.relativePathToFileWithPath(fullThumbnailPath)
2022-08-26 22:29:32 +02:00
2022-08-16 10:39:05 +02:00
var content = [ThumbnailKey : String]()
2022-08-26 22:29:32 +02:00
if item.state.hasThumbnailLink {
#warning("If page in language is missing, link to different language")
let fullPageUrl = item.fullPageUrl(for: language)
let relativePageUrl = parent.relativePathToFileWithPath(fullPageUrl)
content[.url] = "href=\"\(relativePageUrl)\""
}
content[.image] = relativeImageUrl
content[.title] = item.title(for: language)
#warning("Generate thumbnail suffix")
content[.image2x] = relativeImageUrl.insert("@2x", beforeLast: ".")
content[.corner] = item.cornerText(for: language).unwrapped {
2022-08-16 10:39:05 +02:00
factory.largeThumbnail.makeCorner(text: $0)
}
files.requireImage(
source: fullThumbnailPath,
destination: fullThumbnailPath,
2022-08-16 10:39:05 +02:00
width: style.width,
desiredHeight: style.height,
createDoubleVersion: true)
return factory.thumbnail(style: style).generate(content, shouldIndent: false)
2022-08-16 10:39:05 +02:00
}
}