2024-12-09 17:47:03 +01:00

64 lines
1.1 KiB
Swift

import Foundation
final class Tag: ObservableObject {
var id: String {
english.urlComponent
}
@Published
var isVisible: Bool
@Published
var german: LocalizedTag
@Published
var english: LocalizedTag
init(isVisible: Bool = true, german: LocalizedTag, english: LocalizedTag) {
self.isVisible = isVisible
self.german = german
self.english = english
}
var linkName: String {
id.lowercased().replacingOccurrences(of: " ", with: "-")
}
var url: String {
"/tags/\(linkName).html"
}
func localized(in language: ContentLanguage) -> LocalizedTag {
switch language {
case .english: return english
case .german: return german
}
}
}
extension Tag: Identifiable {
}
extension Tag: Equatable {
static func == (_ lhs: Tag, _ rhs: Tag) -> Bool {
lhs.id == rhs.id
}
}
extension Tag: Hashable {
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}
extension Tag: Comparable {
static func < (lhs: Tag, rhs: Tag) -> Bool {
lhs.id < rhs.id
}
}