Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension FeatureItem {
- var isInCollection: Bool { return true }
- var isCollection: Bool { return false }
- var icon: String? { return nil }
- }
- protocol FeatureCollectionItem: FeatureItem {
- var prefersInlineDisplay: Bool { get }
- var count: Int { get }
- subscript(index: Int) -> FeatureItem { get }
- }
- extension FeatureCollectionItem {
- var isCollection: Bool { return true }
- var prefersInlineDisplay: Bool { return false }
- }
- struct FeatureItemList<ItemDataSource: DataSource>: FeatureCollectionItem where ItemDataSource.Item == FeatureItem {
- let key: FeatureItemKey
- let title: String
- let icon: String?
- private let items: ItemDataSource
- init(title: String, key: FeatureItemKey, icon: String? = nil, items: ItemDataSource) {
- self.title = title
- self.key = key
- self.icon = icon
- self.items = items
- }
- var count: Int {
- return self.items.numberOfItems
- }
- subscript(index: Int) -> FeatureItem {
- return self.items.item(at: index)
- }
- }
- extension FeatureItemList: Collection {
- var startIndex: Int {
- return 0
- }
- var endIndex: Int {
- return self.numberOfItems
- }
- func index(after i: Int) -> Int {
- return i + 1
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement