//
//  ArticleProtocol.swift
//  Evergreen
//
//  Created by Brent Simmons on 4/23/16.
//  Copyright © 2016 Ranchero Software, LLC. All rights reserved.
//

import Foundation

public protocol Article: class {

	var account: Account? {get}
	var feedID: String {get}
	var feed: Feed? {get}
	var articleID: String {get}
	var status: ArticleStatus! {get}

	var guid: String? {get}
	var title: String? {get}
	var body: String? {get}
	var link: String? {get}
	var permalink: String? {get}
	var author: String? {get}

	var datePublished: Date? {get}
	var logicalDatePublished: Date {get} //datePublished or something reasonable.
	var dateModified: Date? {get}
}

public extension Article {

	var feed: Feed? {
		get {
			return account?.existingFeedWithID(feedID)
		}
	}
	
	var logicalDatePublished: Date {
		get {
			if let d = datePublished {
				return d
			}
			if let d = dateModified {
				return d
			}
			return status.dateArrived as Date
		}
	}
}

public func articleArraysAreIdentical(array1: [Article], array2: [Article]) -> Bool {
	
	if array1.count != array2.count {
		return false
	}
	
	var index = 0
	for oneItem in array1 {
		if oneItem !== array2[index] {
			return false
		}
		index = index + 1
	}
	
	return true
}