//
//  ArticlePasteboardWriter.swift
//  Evergreen
//
//  Created by Brent Simmons on 11/6/17.
//  Copyright © 2017 Ranchero Software. All rights reserved.
//

import Cocoa
import Data

@objc final class ArticlePasteboardWriter: NSObject, NSPasteboardWriting {

	private let article: Article

	init(article: Article) {

		self.article = article
	}

	// MARK: - NSPasteboardWriting

	func writableTypes(for pasteboard: NSPasteboard) -> [NSPasteboard.PasteboardType] {

		// TODO: add more types

		var types = [NSPasteboard.PasteboardType]()

		if let _ = article.title {
			types += [.string]
		}
		if let link = article.preferredLink, let _ = URL(string: link) {
			types += [.URL]
		}

		return types // TODO: add types
	}

	func pasteboardPropertyList(forType type: NSPasteboard.PasteboardType) -> Any? {

		// TODO: write data for all types declared in writableTypes.

		let plist: Any?

		switch type {
		case .string:
			plist = article.title ?? ""
		case .URL:
			plist = article.preferredLink ?? ""
		default:
			plist = nil
		}

		return plist
	}
}