mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2024-12-18 20:34:46 +01:00
31bd9d918c
Also, added support for accessing feeds directly from the top level container, essentially skipping account as a hierarchy level. With this change, a script like tell app “Evergreen” title of every article of feed "Six Colors" where read is true end tell produces the expected result.
47 lines
1.4 KiB
Swift
47 lines
1.4 KiB
Swift
//
|
|
// NSApplication+Scriptability.swift
|
|
// Evergreen
|
|
//
|
|
// Created by Olof Hellman on 1/8/18.
|
|
// Copyright © 2018 Olof Hellman. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
import Account
|
|
import Data
|
|
|
|
extension NSApplication : ScriptingObjectContainer {
|
|
|
|
var scriptingClassDescription: NSScriptClassDescription {
|
|
return NSApplication.shared.classDescription as! NSScriptClassDescription
|
|
}
|
|
|
|
var scriptingKey: String {
|
|
return "application"
|
|
}
|
|
|
|
@objc(accounts)
|
|
func accounts() -> NSArray {
|
|
let accounts = AccountManager.shared.accounts
|
|
return accounts.map { ScriptableAccount($0) } as NSArray
|
|
}
|
|
|
|
/*
|
|
accessing feeds from the application object skips the 'account' containment hierarchy
|
|
this allows a script like 'articles of feed "The Shape of Everything"' as a shorthand
|
|
for 'articles of feed "The Shape of Everything" of account "On My Mac"'
|
|
*/
|
|
@objc(feeds)
|
|
func feeds() -> NSArray {
|
|
let accounts = AccountManager.shared.accounts
|
|
let emptyFeeds:[Feed] = []
|
|
let feeds = accounts.reduce(emptyFeeds) { (result, nthAccount) -> [Feed] in
|
|
let accountFeeds = nthAccount.children.flatMap { $0 as? Feed }
|
|
return result + accountFeeds
|
|
}
|
|
return feeds.map { ScriptableFeed($0, container:self) } as NSArray
|
|
}
|
|
}
|
|
|
|
|