import Foundation enum ThumbnailStyle: String, CaseIterable { case large case square case small var height: Int { switch self { case .large: return 210 case .square: return 178 case .small: return 78 } } var width: Int { switch self { case .large: return 374 case .square: return 178 case .small: return 78 } } } extension ThumbnailStyle: Codable { } extension ThumbnailStyle: StringProperty { init?(_ value: String) { self.init(rawValue: value) } static var castFailureReason: String { "Thumbnail style must be 'large', 'square' or 'small'" } } extension ThumbnailStyle: DefaultValueProvider { static var defaultValue: ThumbnailStyle { .large } }