Created
October 13, 2014 15:55
-
-
Save xpqz/8071df7704e13f9d6f7a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
enum Tech { | |
case UK(level: Int, modifier: Character) | |
init?(level: Int, modifier: Character) { | |
if (4..<7 ~= level) && (find(["a", "b", "c"] as [Character], modifier) != nil) { | |
self = .UK(level: level, modifier: modifier) | |
} else { | |
return nil | |
} | |
} | |
var description: String { | |
switch self { | |
case let UK(level, modifier): | |
return "\(level)\(modifier)" | |
default: | |
return "Bad UK tech grade" | |
} | |
} | |
} | |
enum Adjectival: Printable { | |
case Diff, VeryDifficult, Severe, HardSevere, VerySevere, HardVerySevere, Extreme(level: Int), Error | |
var description: String { | |
switch self { | |
case Diff: | |
return "D" | |
case VeryDifficult: | |
return "VDiff" | |
case Severe: | |
return "S" | |
case HardSevere: | |
return "HS" | |
case VerySevere: | |
return "VS" | |
case HardVerySevere: | |
return "HVS" | |
case let Extreme(level): | |
return "E\(level)" | |
default: | |
return "Bad grade" | |
} | |
} | |
} | |
enum Grade: Printable { | |
case UKTrad(adjectival: Adjectival, technical: Tech?) | |
var description: String { | |
switch self { | |
case let UKTrad(adjectival, technical): | |
if technical == nil { | |
return adjectival.description | |
} | |
return "\(adjectival.description) \(technical!.description)" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment