35 lines
871 B
Swift
35 lines
871 B
Swift
/// A format listings are published in, declared in navigation order; the raw value is the search filter token.
|
|
enum Format: String, CaseIterable, Sendable {
|
|
/// Single-issue comics.
|
|
case singleIssues = "single-issues"
|
|
/// Manga volumes.
|
|
case manga
|
|
/// Trade paperbacks.
|
|
case tradePaperbacks = "trade-paperbacks"
|
|
/// Hardcovers.
|
|
case hardcovers
|
|
}
|
|
|
|
// MARK: - Extensions
|
|
|
|
extension Format {
|
|
|
|
// MARK: Computed
|
|
|
|
/// The format's name as shown in the navigation.
|
|
var label: String {
|
|
switch self {
|
|
case .singleIssues: "Single issues"
|
|
case .manga: "Manga"
|
|
case .tradePaperbacks: "Trade paperbacks"
|
|
case .hardcovers: "Hardcovers"
|
|
}
|
|
}
|
|
|
|
/// The path of the search screen filtered to the format.
|
|
var path: String {
|
|
"\(String.Route.search)?format=\(rawValue)"
|
|
}
|
|
|
|
}
|