36 lines
1.3 KiB
Swift
36 lines
1.3 KiB
Swift
import Foundation
|
|
|
|
extension Content {
|
|
|
|
func generateFeed(for language: ContentLanguage, bookmarkKey: String) {
|
|
let posts = posts.map { $0.feedEntry(for: language) }
|
|
let data = websiteData.localized(in: language)
|
|
let navigationItems: [FeedNavigationLink] = websiteData.navigationTags.map {
|
|
let localized = $0.localized(in: language)
|
|
return .init(text: localized.name, url: localized.urlComponent)
|
|
}
|
|
|
|
DispatchQueue.global(qos: .userInitiated).async {
|
|
|
|
let feed = Feed(
|
|
language: language,
|
|
title: data.title,
|
|
description: data.description,
|
|
iconDescription: data.iconDescription,
|
|
navigationItems: navigationItems,
|
|
posts: posts)
|
|
let fileContent = feed.content
|
|
Content.accessFolderFromBookmark(key: bookmarkKey) { folder in
|
|
let outputFile = folder.appendingPathComponent("feed.html", isDirectory: false)
|
|
do {
|
|
try fileContent
|
|
.data(using: .utf8)!
|
|
.write(to: outputFile)
|
|
} catch {
|
|
print("Failed to save: \(error)")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|