111 lines
3.1 KiB
Swift
Raw Permalink Normal View History

import Foundation
// Emum for namespaces common amongst most Wikipedia languages.
@objc public enum PageNamespace: Int, Codable {
case media = -2
case special = -1
case main = 0
case talk = 1
case user = 2
case userTalk = 3
case wikipedia = 4
case wikipediaTalk = 5
case file = 6
case fileTalk = 7
case mediawiki = 8
case mediawikiTalk = 9
case template = 10
case templateTalk = 11
case help = 12
case helpTalk = 13
case category = 14
case cateogryTalk = 15
case thread = 90
case threadTalk = 91
case summary = 92
case summaryTalk = 93
case portal = 100
case portalTalk = 101
case project = 102
case projectTalk = 103
// case ambiguous1 = 104
// case ambiguous2 = 105
// case ambiguous3 = 106
// case ambiguous4 = 107
case book = 108
case bookTalk = 109
// case ambiguous5 = 110
// case ambiguous6 = 111
case draft = 118
case draftTalk = 119
case educationProgram = 446
case educationProgramTalk = 447
case campaign = 460
case campaignTalk = 461
case timedText = 710
case timedTextTalk = 711
case module = 828
case moduleTalk = 829
case gadget = 2300
case gadgetTalk = 2301
case gadgetDefinition = 2302
case gadgetDefinitionTalk = 2303
case topic = 2600
public var canonicalName: String {
switch self {
case .media: return "Media"
case .special: return "Special"
case .talk: return "Talk"
case .user: return "User"
case .userTalk: return "User talk"
case .wikipedia: return "Wikipedia"
case .wikipediaTalk: return "Wikipedia talk"
case .file: return "File"
case .fileTalk: return "File talk"
case .mediawiki: return "MediaWiki"
case .mediawikiTalk: return "MediaWiki talk"
case .template: return "Template"
case .templateTalk: return "Template talk"
case .help: return "Help"
case .helpTalk: return "Help talk"
case .category: return "Category"
case .cateogryTalk: return "Category talk"
case .portal: return "Portal"
case .portalTalk: return "Portal talk"
case .draft: return "Draft"
case .draftTalk: return "Draft talk"
case .timedText: return "TimedText"
case .timedTextTalk: return "TimedText talk"
case .module: return "Module"
case .moduleTalk: return "Module talk"
case .gadget: return "Gadget"
case .gadgetTalk: return "Gadget talk"
case .gadgetDefinition: return "Gadget definition"
case .gadgetDefinitionTalk: return "Gadget definition talk"
default:
return ""
}
}
public var convertedToOrFromTalk: PageNamespace? {
switch self {
case .main:
return .talk
case .talk:
return .main
default:
return nil
}
}
}
extension PageNamespace {
public init?(namespaceValue: Int?) {
guard let rawValue = namespaceValue else {
return nil
}
self.init(rawValue: rawValue)
}
}