67 lines
1.7 KiB
Swift
67 lines
1.7 KiB
Swift
import Foundation
|
|
|
|
final class Tag: Item {
|
|
|
|
@Published
|
|
var isVisible: Bool
|
|
|
|
@Published
|
|
var german: LocalizedTag
|
|
|
|
@Published
|
|
var english: LocalizedTag
|
|
|
|
override init(content: Content, id: String) {
|
|
self.isVisible = true
|
|
self.english = .init(content: content, urlComponent: id, name: id)
|
|
let deId = id + "-" + ContentLanguage.german.rawValue
|
|
self.german = .init(content: content, urlComponent: deId, name: deId)
|
|
super.init(content: content, id: id)
|
|
}
|
|
|
|
init(content: Content, id: String, isVisible: Bool = true, german: LocalizedTag, english: LocalizedTag) {
|
|
self.isVisible = isVisible
|
|
self.german = german
|
|
self.english = english
|
|
super.init(content: content, id: id)
|
|
}
|
|
|
|
var linkName: String {
|
|
id.lowercased().replacingOccurrences(of: " ", with: "-")
|
|
}
|
|
|
|
var url: String {
|
|
"/tags/\(linkName).html"
|
|
}
|
|
|
|
// MARK: Paths
|
|
|
|
func filePathRelativeToOutputFolder(for language: ContentLanguage) -> String {
|
|
makeCleanRelativePath(internalPath(for: language))
|
|
}
|
|
|
|
private func internalPath(for language: ContentLanguage) -> String {
|
|
content.settings.paths.tagsOutputFolderPath + "/" + localized(in: language).urlComponent
|
|
}
|
|
|
|
override func absoluteUrl(in language: ContentLanguage) -> String {
|
|
makeCleanAbsolutePath(internalPath(for: language))
|
|
}
|
|
|
|
override func title(in language: ContentLanguage) -> String {
|
|
localized(in: language).name
|
|
}
|
|
|
|
override var itemType: ItemType {
|
|
.tagPage(self)
|
|
}
|
|
|
|
func contains(urlComponent: String) -> Bool {
|
|
german.urlComponent == urlComponent || english.urlComponent == urlComponent
|
|
}
|
|
}
|
|
|
|
extension Tag: LocalizedItem {
|
|
|
|
}
|