//
//  HeaderContentItemContent.swift
//  Astro
//
//  Created by Kerr Miller on 2016-12-05.
//  Copyright © 2016 Mobify Research & Development Inc. All rights reserved.
//

import UIKit

enum HeaderContentItemContent {
    case image(UIImage)
    case title(String)
    case plugin(ViewPlugin)

    // Only used to compare HeaderContentItemContent items
    fileprivate var equalityObject: NSObject {
        switch self {
        case .image(let image):
            return image
        case .title(let title):
            return title as NSObject
        case .plugin(let viewPlugin):
            return viewPlugin.viewController
        }
    }
}

extension HeaderContentItemContent: CustomStringConvertible {
    var description: String {
        switch self {
        case .image(let image):
            return image.description
        case .title(let title):
            return title
        case .plugin(let viewPlugin):
            return viewPlugin.viewController.description
        }
    }
}

extension HeaderContentItemContent: Equatable { }

func ==(lhs: HeaderContentItemContent, rhs: HeaderContentItemContent) -> Bool {
    return lhs.equalityObject == rhs.equalityObject
}
