final class PageGenerator { private let content: Content private let imageGenerator: ImageGenerator private let navigationBarData: NavigationBarData let results = GenerationResultsHandler() init(content: Content, imageGenerator: ImageGenerator, navigationBarData: NavigationBarData) { self.content = content self.imageGenerator = imageGenerator self.navigationBarData = navigationBarData } func generate(page: Page, language: ContentLanguage) -> String { let contentGenerator = PageContentParser( page: page, content: content, language: language, results: results, imageGenerator: imageGenerator) let rawPageContent = content.storage.pageContent(for: page.id, language: language) let pageContent = contentGenerator.generatePage(from: rawPageContent) let localized = page.localized(in: language) return ContentPage( language: language, dateString: page.dateText(in: language), title: localized.title, tags: page.tags.map { $0.data(in: language) }, linkTitle: localized.linkPreviewTitle ?? localized.title, description: localized.linkPreviewDescription ?? "", navigationBarData: navigationBarData, pageContent: pageContent) .content } }