From 2973bf8edbd3a0bb57c89a09a250d526b938f0b3 Mon Sep 17 00:00:00 2001 From: Olof Hellman Date: Fri, 19 Jan 2018 22:49:01 -0800 Subject: [PATCH] Add opal representation properties for scripting feed, account and folder. --- Evergreen.xcodeproj/project.pbxproj | 6 ++++++ Evergreen/Resources/Evergreen.sdef | 9 +++++++++ Evergreen/Scriptability/Account+Scriptability.swift | 7 ++++++- Evergreen/Scriptability/Feed+Scriptability.swift | 5 +++++ Evergreen/Scriptability/Folder+Scriptability.swift | 5 +++++ EvergreenTests/ScriptingTests/ScriptingTests.swift | 4 ++++ .../ScriptingTests/scripts/testFeedOPML.applescript | 10 ++++++++++ 7 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 EvergreenTests/ScriptingTests/scripts/testFeedOPML.applescript diff --git a/Evergreen.xcodeproj/project.pbxproj b/Evergreen.xcodeproj/project.pbxproj index 9bfc87333..34ff43eeb 100644 --- a/Evergreen.xcodeproj/project.pbxproj +++ b/Evergreen.xcodeproj/project.pbxproj @@ -141,6 +141,8 @@ D5A2678C20130ECF00A8D3C0 /* Author+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A2678B20130ECF00A8D3C0 /* Author+Scriptability.swift */; }; D5A2679C201312F900A8D3C0 /* testNameOfAuthors.applescript in Sources */ = {isa = PBXBuildFile; fileRef = D5A2679B201312F900A8D3C0 /* testNameOfAuthors.applescript */; }; D5A2679D201313A200A8D3C0 /* testNameOfAuthors.applescript in CopyFiles */ = {isa = PBXBuildFile; fileRef = D5A2679B201312F900A8D3C0 /* testNameOfAuthors.applescript */; }; + D5A267C120131B8300A8D3C0 /* testFeedOPML.applescript in Sources */ = {isa = PBXBuildFile; fileRef = D5A267B220131B8300A8D3C0 /* testFeedOPML.applescript */; }; + D5A267C220131BA000A8D3C0 /* testFeedOPML.applescript in CopyFiles */ = {isa = PBXBuildFile; fileRef = D5A267B220131B8300A8D3C0 /* testFeedOPML.applescript */; }; D5D1751220020B980047B29D /* Evergreen.sdef in Resources */ = {isa = PBXBuildFile; fileRef = D5D175012002039D0047B29D /* Evergreen.sdef */; }; D5F4EDB5200744A700B9E363 /* ScriptingObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB4200744A700B9E363 /* ScriptingObject.swift */; }; D5F4EDB720074D6500B9E363 /* Feed+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB620074D6500B9E363 /* Feed+Scriptability.swift */; }; @@ -442,6 +444,7 @@ dstPath = TestScripts; dstSubfolderSpec = 7; files = ( + D5A267C220131BA000A8D3C0 /* testFeedOPML.applescript in CopyFiles */, D5A2679D201313A200A8D3C0 /* testNameOfAuthors.applescript in CopyFiles */, D5F4EDE920075C6700B9E363 /* testNameAndUrlOfEveryFeed.applescript in CopyFiles */, D5F4EDEA20075C6700B9E363 /* testNameOfEveryFolder.applescript in CopyFiles */, @@ -585,6 +588,7 @@ D5907DB12004BB37005947E5 /* ScriptingObjectContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptingObjectContainer.swift; sourceTree = ""; }; D5A2678B20130ECF00A8D3C0 /* Author+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Author+Scriptability.swift"; sourceTree = ""; }; D5A2679B201312F900A8D3C0 /* testNameOfAuthors.applescript */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.applescript; path = testNameOfAuthors.applescript; sourceTree = ""; }; + D5A267B220131B8300A8D3C0 /* testFeedOPML.applescript */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.applescript; path = testFeedOPML.applescript; sourceTree = ""; }; D5D175012002039D0047B29D /* Evergreen.sdef */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = Evergreen.sdef; path = ../Resources/Evergreen.sdef; sourceTree = ""; }; D5F4EDB4200744A700B9E363 /* ScriptingObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptingObject.swift; sourceTree = ""; }; D5F4EDB620074D6500B9E363 /* Feed+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+Scriptability.swift"; sourceTree = ""; }; @@ -1121,6 +1125,7 @@ isa = PBXGroup; children = ( D5907C9D20023249005947E5 /* testGenericScript.applescript */, + D5A267B220131B8300A8D3C0 /* testFeedOPML.applescript */, D5558FD1200223F60066386B /* testGetURL.applescript */, D5F4EDE720075C1800B9E363 /* testNameAndUrlOfEveryFeed.applescript */, D5A2679B201312F900A8D3C0 /* testNameOfAuthors.applescript */, @@ -1635,6 +1640,7 @@ D5558FD5200225680066386B /* NSAppleEventDescriptor+UserRecordFields.swift in Sources */, D5558FD9200228D30066386B /* AppleEventUtils.swift in Sources */, D5907CA1200232A1005947E5 /* testGetURL.applescript in Sources */, + D5A267C120131B8300A8D3C0 /* testFeedOPML.applescript in Sources */, D5A2679C201312F900A8D3C0 /* testNameOfAuthors.applescript in Sources */, 849C64761ED37A5D003D8FC0 /* EvergreenTests.swift in Sources */, D5558FD32002245C0066386B /* ScriptingTests.swift in Sources */, diff --git a/Evergreen/Resources/Evergreen.sdef b/Evergreen/Resources/Evergreen.sdef index 6a3b6a98b..d1bd7233d 100644 --- a/Evergreen/Resources/Evergreen.sdef +++ b/Evergreen/Resources/Evergreen.sdef @@ -49,6 +49,9 @@ + + + @@ -80,6 +83,9 @@ + + + @@ -111,6 +117,9 @@ + + + diff --git a/Evergreen/Scriptability/Account+Scriptability.swift b/Evergreen/Scriptability/Account+Scriptability.swift index 6ad57f854..47723de6c 100644 --- a/Evergreen/Scriptability/Account+Scriptability.swift +++ b/Evergreen/Scriptability/Account+Scriptability.swift @@ -74,7 +74,12 @@ class ScriptableAccount: NSObject, UniqueIdScriptingObject, ScriptingObjectConta } return contentsArray as NSArray } - + + @objc(opmlRepresentation) + var opmlRepresentation:String { + return self.account.OPMLString(indentLevel:0) + } + @objc(accountType) var accountType:OSType { var osType:String = "" diff --git a/Evergreen/Scriptability/Feed+Scriptability.swift b/Evergreen/Scriptability/Feed+Scriptability.swift index 249270d3f..9122ee6ef 100644 --- a/Evergreen/Scriptability/Feed+Scriptability.swift +++ b/Evergreen/Scriptability/Feed+Scriptability.swift @@ -80,6 +80,11 @@ class ScriptableFeed: NSObject, UniqueIdScriptingObject, ScriptingObjectContaine return self.feed.faviconURL ?? "" } + @objc(opmlRepresentation) + var opmlRepresentation:String { + return self.feed.OPMLString(indentLevel:0) + } + @objc(authors) var authors:NSArray { let feedAuthors = feed.authors ?? [] diff --git a/Evergreen/Scriptability/Folder+Scriptability.swift b/Evergreen/Scriptability/Folder+Scriptability.swift index fc81a433f..2cab418d7 100644 --- a/Evergreen/Scriptability/Folder+Scriptability.swift +++ b/Evergreen/Scriptability/Folder+Scriptability.swift @@ -53,4 +53,9 @@ class ScriptableFolder: NSObject, UniqueIdScriptingObject { return self.folder.name ?? "" } + @objc(opmlRepresentation) + var opmlRepresentation:String { + return self.folder.OPMLString(indentLevel:0) + } + } diff --git a/EvergreenTests/ScriptingTests/ScriptingTests.swift b/EvergreenTests/ScriptingTests/ScriptingTests.swift index 7dcd53c1c..06fb60520 100644 --- a/EvergreenTests/ScriptingTests/ScriptingTests.swift +++ b/EvergreenTests/ScriptingTests/ScriptingTests.swift @@ -93,5 +93,9 @@ class ScriptingTests: XCTestCase { func testNameOfAuthorsScript() { _ = doIndividualScript(filename: "testNameOfAuthors") } + + func testNameOfAuthorsScript() { + _ = doIndividualScript(filename: "testFeedOPML") + } } diff --git a/EvergreenTests/ScriptingTests/scripts/testFeedOPML.applescript b/EvergreenTests/ScriptingTests/scripts/testFeedOPML.applescript new file mode 100644 index 000000000..4362499cf --- /dev/null +++ b/EvergreenTests/ScriptingTests/scripts/testFeedOPML.applescript @@ -0,0 +1,10 @@ +-- this script just tests that no error was generated from the script +try + tell application "Evergreen" + opml representation of feed 1 of account 1 + end tell +on error message + return {test_result:false, script_result:message} +end try + +return {test_result:true}