From 6ae9011ababa17bae071d1fa9230ff50664b96bb Mon Sep 17 00:00:00 2001 From: leogdion Date: Wed, 6 Sep 2023 14:05:49 -0400 Subject: [PATCH] 0.3.5 * solve: issue #51 - equatable wordpress elements and open their properties to public * Parse Podcast Person #48 --------- Co-authored-by: Ahmed Shendy --- Documentation/Reference/SyndiKit/README.md | 92 ------- .../Reference/SyndiKit/classes/SynDecoder.md | 56 ----- .../enums/DateFormatterDecoder.RSS.md | 7 - .../Reference/SyndiKit/enums/EntryID.md | 124 ---------- .../Reference/SyndiKit/enums/MediaContent.md | 20 -- .../SyndiKit/enums/SyndicationUpdatePeriod.md | 29 --- .../Reference/SyndiKit/enums/Video.md | 14 -- .../SyndiKit/enums/WordPressElements.md | 7 - .../SyndiKit/extensions/AtomEntry.md | 43 ---- .../Reference/SyndiKit/extensions/AtomFeed.md | 49 ---- .../SyndiKit/extensions/Entryable.md | 13 - .../Reference/SyndiKit/extensions/JSONFeed.md | 61 ----- .../Reference/SyndiKit/extensions/JSONItem.md | 49 ---- .../SyndiKit/extensions/RSSChannel.md | 13 - .../Reference/SyndiKit/extensions/RSSFeed.md | 67 ----- .../Reference/SyndiKit/extensions/RSSItem.md | 61 ----- .../SyndiKit/extensions/SiteDirectory.md | 16 -- .../SyndiKit/extensions/WordPressPost.md | 13 - .../SyndiKit/protocols/EntryCategory.md | 16 -- .../Reference/SyndiKit/protocols/Entryable.md | 98 -------- .../Reference/SyndiKit/protocols/Feedable.md | 107 -------- .../SyndiKit/protocols/PodcastEpisode.md | 62 ----- .../SyndiKit/protocols/SiteDirectory.md | 30 --- .../protocols/SiteDirectoryBuilder.md | 14 -- .../Reference/SyndiKit/protocols/YouTubeID.md | 30 --- .../SyndiKit/structs/AtomCategory.md | 14 -- .../Reference/SyndiKit/structs/AtomEntry.md | 122 --------- .../Reference/SyndiKit/structs/AtomFeed.md | 97 -------- .../Reference/SyndiKit/structs/AtomMedia.md | 36 --- .../Reference/SyndiKit/structs/Author.md | 34 --- .../Reference/SyndiKit/structs/CData.md | 31 --- .../SyndiKit/structs/CategoryDescriptor.md | 20 -- .../SyndiKit/structs/CategoryLanguage.md | 26 -- .../Reference/SyndiKit/structs/Enclosure.md | 20 -- .../Reference/SyndiKit/structs/JSONFeed.md | 46 ---- .../Reference/SyndiKit/structs/JSONItem.md | 52 ---- .../Reference/SyndiKit/structs/Link.md | 20 -- .../Reference/SyndiKit/structs/RSSChannel.md | 138 ----------- .../Reference/SyndiKit/structs/RSSFeed.md | 28 --- .../Reference/SyndiKit/structs/RSSImage.md | 66 ----- .../Reference/SyndiKit/structs/RSSItem.md | 231 ------------------ .../SyndiKit/structs/RSSItemCategory.md | 45 ---- .../Reference/SyndiKit/structs/Site.md | 50 ---- .../SyndiKit/structs/SiteCategory.md | 20 -- .../structs/SiteCollectionDirectory.md | 34 --- .../structs/SiteCollectionDirectoryBuilder.md | 20 -- .../SyndiKit/structs/SiteLanguage.md | 20 -- .../structs/SiteLanguageCategory.Site.md | 38 --- .../SyndiKit/structs/SiteLanguageCategory.md | 32 --- .../SyndiKit/structs/SiteLanguageContent.md | 26 -- .../SyndiKit/structs/SyndicationUpdate.md | 46 ---- .../structs/WordPressElements.Category.md | 7 - .../structs/WordPressElements.PostMeta.md | 20 -- .../SyndiKit/structs/WordPressElements.Tag.md | 7 - .../SyndiKit/structs/WordPressPost.md | 134 ---------- .../SyndiKit/structs/XMLStringInt.md | 31 --- .../SyndiKit/structs/iTunesDuration.md | 33 --- .../Reference/SyndiKit/structs/iTunesOwner.md | 20 -- .../SyndiKit/typealiases/SiteCategoryType.md | 7 - .../SyndiKit/typealiases/SiteCollection.md | 7 - ...iteCollectionDirectory.CategorySequence.md | 8 - ...iteCollectionDirectory.LanguageSequence.md | 8 - .../SiteCollectionDirectory.SiteSequence.md | 7 - .../SyndiKit/typealiases/SiteLanguageType.md | 7 - .../SyndiKit/typealiases/SiteStub.md | 7 - .../typealiases/SyndicationUpdateFrequency.md | 12 - .../WordPressPost.CommentStatus.md | 7 - .../typealiases/WordPressPost.PingStatus.md | 7 - .../typealiases/WordPressPost.PostType.md | 7 - .../typealiases/WordPressPost.Status.md | 7 - .../SyndiKit/typealiases/iTunesEpisode.md | 7 - .../SyndiKit/typealiases/iTunesImage.md | 7 - Package.resolved | 4 +- .../SyndiKit/Common/Primitives/CData.swift | 2 +- .../SyndiKit/Formats/Feeds/RSS/RSSItem.swift | 10 + .../Formats/Media/Podcast/PodcastPerson.swift | 18 ++ .../Formats/Media/PodcastEpisode.swift | 3 + .../Formats/Media/Wordpress/WPCategory.swift | 17 +- .../Formats/Media/Wordpress/WPPostMeta.swift | 17 +- .../Formats/Media/Wordpress/WPTag.swift | 16 +- Tests/LinuxMain.swift | 8 - Tests/SyndiKitTests/RSSCodedTests.swift | 63 +++++ .../WordPressElementsTests.swift | 61 +++++ Tests/SyndiKitTests/XCTestManifests.swift | 74 ------ 84 files changed, 196 insertions(+), 2857 deletions(-) delete mode 100644 Documentation/Reference/SyndiKit/README.md delete mode 100644 Documentation/Reference/SyndiKit/classes/SynDecoder.md delete mode 100644 Documentation/Reference/SyndiKit/enums/DateFormatterDecoder.RSS.md delete mode 100644 Documentation/Reference/SyndiKit/enums/EntryID.md delete mode 100644 Documentation/Reference/SyndiKit/enums/MediaContent.md delete mode 100644 Documentation/Reference/SyndiKit/enums/SyndicationUpdatePeriod.md delete mode 100644 Documentation/Reference/SyndiKit/enums/Video.md delete mode 100644 Documentation/Reference/SyndiKit/enums/WordPressElements.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/AtomEntry.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/AtomFeed.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/Entryable.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/JSONFeed.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/JSONItem.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/RSSChannel.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/RSSFeed.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/RSSItem.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/SiteDirectory.md delete mode 100644 Documentation/Reference/SyndiKit/extensions/WordPressPost.md delete mode 100644 Documentation/Reference/SyndiKit/protocols/EntryCategory.md delete mode 100644 Documentation/Reference/SyndiKit/protocols/Entryable.md delete mode 100644 Documentation/Reference/SyndiKit/protocols/Feedable.md delete mode 100644 Documentation/Reference/SyndiKit/protocols/PodcastEpisode.md delete mode 100644 Documentation/Reference/SyndiKit/protocols/SiteDirectory.md delete mode 100644 Documentation/Reference/SyndiKit/protocols/SiteDirectoryBuilder.md delete mode 100644 Documentation/Reference/SyndiKit/protocols/YouTubeID.md delete mode 100644 Documentation/Reference/SyndiKit/structs/AtomCategory.md delete mode 100644 Documentation/Reference/SyndiKit/structs/AtomEntry.md delete mode 100644 Documentation/Reference/SyndiKit/structs/AtomFeed.md delete mode 100644 Documentation/Reference/SyndiKit/structs/AtomMedia.md delete mode 100644 Documentation/Reference/SyndiKit/structs/Author.md delete mode 100644 Documentation/Reference/SyndiKit/structs/CData.md delete mode 100644 Documentation/Reference/SyndiKit/structs/CategoryDescriptor.md delete mode 100644 Documentation/Reference/SyndiKit/structs/CategoryLanguage.md delete mode 100644 Documentation/Reference/SyndiKit/structs/Enclosure.md delete mode 100644 Documentation/Reference/SyndiKit/structs/JSONFeed.md delete mode 100644 Documentation/Reference/SyndiKit/structs/JSONItem.md delete mode 100644 Documentation/Reference/SyndiKit/structs/Link.md delete mode 100644 Documentation/Reference/SyndiKit/structs/RSSChannel.md delete mode 100644 Documentation/Reference/SyndiKit/structs/RSSFeed.md delete mode 100644 Documentation/Reference/SyndiKit/structs/RSSImage.md delete mode 100644 Documentation/Reference/SyndiKit/structs/RSSItem.md delete mode 100644 Documentation/Reference/SyndiKit/structs/RSSItemCategory.md delete mode 100644 Documentation/Reference/SyndiKit/structs/Site.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SiteCategory.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SiteCollectionDirectory.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SiteCollectionDirectoryBuilder.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SiteLanguage.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.Site.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SiteLanguageContent.md delete mode 100644 Documentation/Reference/SyndiKit/structs/SyndicationUpdate.md delete mode 100644 Documentation/Reference/SyndiKit/structs/WordPressElements.Category.md delete mode 100644 Documentation/Reference/SyndiKit/structs/WordPressElements.PostMeta.md delete mode 100644 Documentation/Reference/SyndiKit/structs/WordPressElements.Tag.md delete mode 100644 Documentation/Reference/SyndiKit/structs/WordPressPost.md delete mode 100644 Documentation/Reference/SyndiKit/structs/XMLStringInt.md delete mode 100644 Documentation/Reference/SyndiKit/structs/iTunesDuration.md delete mode 100644 Documentation/Reference/SyndiKit/structs/iTunesOwner.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SiteCategoryType.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SiteCollection.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.CategorySequence.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.LanguageSequence.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.SiteSequence.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SiteLanguageType.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SiteStub.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/SyndicationUpdateFrequency.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/WordPressPost.CommentStatus.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/WordPressPost.PingStatus.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/WordPressPost.PostType.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/WordPressPost.Status.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/iTunesEpisode.md delete mode 100644 Documentation/Reference/SyndiKit/typealiases/iTunesImage.md create mode 100644 Sources/SyndiKit/Formats/Media/Podcast/PodcastPerson.swift delete mode 100644 Tests/LinuxMain.swift create mode 100644 Tests/SyndiKitTests/WordPressElementsTests.swift delete mode 100644 Tests/SyndiKitTests/XCTestManifests.swift diff --git a/Documentation/Reference/SyndiKit/README.md b/Documentation/Reference/SyndiKit/README.md deleted file mode 100644 index a01cfe6..0000000 --- a/Documentation/Reference/SyndiKit/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# Reference Documentation - -## Protocols - -- [EntryCategory](protocols/EntryCategory.md) -- [Entryable](protocols/Entryable.md) -- [Feedable](protocols/Feedable.md) -- [PodcastEpisode](protocols/PodcastEpisode.md) -- [SiteDirectory](protocols/SiteDirectory.md) -- [SiteDirectoryBuilder](protocols/SiteDirectoryBuilder.md) -- [YouTubeID](protocols/YouTubeID.md) - -## Structs - -- [AtomCategory](structs/AtomCategory.md) -- [AtomEntry](structs/AtomEntry.md) -- [AtomFeed](structs/AtomFeed.md) -- [AtomMedia](structs/AtomMedia.md) -- [Author](structs/Author.md) -- [CData](structs/CData.md) -- [CategoryDescriptor](structs/CategoryDescriptor.md) -- [CategoryLanguage](structs/CategoryLanguage.md) -- [Enclosure](structs/Enclosure.md) -- [JSONFeed](structs/JSONFeed.md) -- [JSONItem](structs/JSONItem.md) -- [Link](structs/Link.md) -- [RSSChannel](structs/RSSChannel.md) -- [RSSFeed](structs/RSSFeed.md) -- [RSSImage](structs/RSSImage.md) -- [RSSItem](structs/RSSItem.md) -- [RSSItemCategory](structs/RSSItemCategory.md) -- [Site](structs/Site.md) -- [SiteCategory](structs/SiteCategory.md) -- [SiteCollectionDirectory](structs/SiteCollectionDirectory.md) -- [SiteCollectionDirectoryBuilder](structs/SiteCollectionDirectoryBuilder.md) -- [SiteLanguage](structs/SiteLanguage.md) -- [SiteLanguageCategory](structs/SiteLanguageCategory.md) -- [SiteLanguageCategory.Site](structs/SiteLanguageCategory.Site.md) -- [SiteLanguageContent](structs/SiteLanguageContent.md) -- [SyndicationUpdate](structs/SyndicationUpdate.md) -- [WordPressElements.Category](structs/WordPressElements.Category.md) -- [WordPressElements.PostMeta](structs/WordPressElements.PostMeta.md) -- [WordPressElements.Tag](structs/WordPressElements.Tag.md) -- [WordPressPost](structs/WordPressPost.md) -- [XMLStringInt](structs/XMLStringInt.md) -- [iTunesDuration](structs/iTunesDuration.md) -- [iTunesOwner](structs/iTunesOwner.md) - -## Classes - -- [SynDecoder](classes/SynDecoder.md) - -## Enums - -- [DateFormatterDecoder.RSS](enums/DateFormatterDecoder.RSS.md) -- [EntryID](enums/EntryID.md) -- [MediaContent](enums/MediaContent.md) -- [SyndicationUpdatePeriod](enums/SyndicationUpdatePeriod.md) -- [Video](enums/Video.md) -- [WordPressElements](enums/WordPressElements.md) - -## Extensions - -- [AtomEntry](extensions/AtomEntry.md) -- [AtomFeed](extensions/AtomFeed.md) -- [Entryable](extensions/Entryable.md) -- [JSONFeed](extensions/JSONFeed.md) -- [JSONItem](extensions/JSONItem.md) -- [RSSChannel](extensions/RSSChannel.md) -- [RSSFeed](extensions/RSSFeed.md) -- [RSSItem](extensions/RSSItem.md) -- [SiteDirectory](extensions/SiteDirectory.md) -- [WordPressPost](extensions/WordPressPost.md) - -## Typealiases - -- [SiteCategoryType](typealiases/SiteCategoryType.md) -- [SiteCollection](typealiases/SiteCollection.md) -- [SiteCollectionDirectory.CategorySequence](typealiases/SiteCollectionDirectory.CategorySequence.md) -- [SiteCollectionDirectory.LanguageSequence](typealiases/SiteCollectionDirectory.LanguageSequence.md) -- [SiteCollectionDirectory.SiteSequence](typealiases/SiteCollectionDirectory.SiteSequence.md) -- [SiteLanguageType](typealiases/SiteLanguageType.md) -- [SiteStub](typealiases/SiteStub.md) -- [SyndicationUpdateFrequency](typealiases/SyndicationUpdateFrequency.md) -- [WordPressPost.CommentStatus](typealiases/WordPressPost.CommentStatus.md) -- [WordPressPost.PingStatus](typealiases/WordPressPost.PingStatus.md) -- [WordPressPost.PostType](typealiases/WordPressPost.PostType.md) -- [WordPressPost.Status](typealiases/WordPressPost.Status.md) -- [iTunesEpisode](typealiases/iTunesEpisode.md) -- [iTunesImage](typealiases/iTunesImage.md) - -This file was generated by [SourceDocs](https://github.com/eneko/SourceDocs) \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/classes/SynDecoder.md b/Documentation/Reference/SyndiKit/classes/SynDecoder.md deleted file mode 100644 index cfd511d..0000000 --- a/Documentation/Reference/SyndiKit/classes/SynDecoder.md +++ /dev/null @@ -1,56 +0,0 @@ -**CLASS** - -# `SynDecoder` - -```swift -public class SynDecoder -``` - -An object that decodes instances of Feedable from JSON or XML objects. -## Topics - -### Creating a Decoder - -- ``init()`` - -### Decoding - -- ``decode(_:)`` - -## Methods -### `init()` - -```swift -public convenience init() -``` - -Creates an instance of `RSSDecoder` - -### `decode(_:)` - -```swift -public func decode(_ data: Data) throws -> Feedable -``` - -Returns a `Feedable` object of the type you specify, decoded from a JSON object. -- Parameter data: The JSON or XML object to decode. -- Returns: A `Feedable` object - -If the data is not valid RSS, this method throws the -`DecodingError.dataCorrupted(_:)` error. -If a value within the RSS fails to decode, -this method throws the corresponding error. - -```swift -let data = Data(contentsOf: "empowerapps-show.xml")! -let decoder = SynDecoder() -let feed = try decoder.decode(data) - -print(feed.title) // Prints "Empower Apps" -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| data | The JSON or XML object to decode. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/enums/DateFormatterDecoder.RSS.md b/Documentation/Reference/SyndiKit/enums/DateFormatterDecoder.RSS.md deleted file mode 100644 index a96f56b..0000000 --- a/Documentation/Reference/SyndiKit/enums/DateFormatterDecoder.RSS.md +++ /dev/null @@ -1,7 +0,0 @@ -**ENUM** - -# `DateFormatterDecoder.RSS` - -```swift -public enum RSS -``` diff --git a/Documentation/Reference/SyndiKit/enums/EntryID.md b/Documentation/Reference/SyndiKit/enums/EntryID.md deleted file mode 100644 index 0254b88..0000000 --- a/Documentation/Reference/SyndiKit/enums/EntryID.md +++ /dev/null @@ -1,124 +0,0 @@ -**ENUM** - -# `EntryID` - -```swift -public enum EntryID: Codable, Equatable, LosslessStringConvertible -``` - -Entry identifier based on the RSS guid. -## Topics - -### Enumeration Cases - -- ``url(_:)`` -- ``uuid(_:)`` -- ``path(_:separatedBy:)`` -- ``string(_:)`` - -### String Conversion - -- ``init(string:)`` -- ``description`` -- ``init(_:)`` - - ### Codable Overrides - -- ``init(from:)`` -- ``encode(to:)`` - -## Cases -### `url(_:)` - -```swift -case url(URL) -``` - -URL format. - -### `uuid(_:)` - -```swift -case uuid(UUID) -``` - -UUID format. - -### `path(_:separatedBy:)` - -```swift -case path([String], separatedBy: String) -``` - -String path separated by a character string. - -This is generally used by YouTube's RSS feed. in the format of: -``` -yt:video:(YouTube Video ID) -``` - -### `string(_:)` - -```swift -case string(String) -``` - -Plain un-parsable String. - -## Properties -### `description` - -```swift -public var description: String -``` - -## Methods -### `init(_:)` - -```swift -public init?(_ description: String) -``` - -Implementation of ``LosslessStringConvertible`` initializer. -This will never return a nil instance. -Therefore you should use ``init(string:)``to avoid the `Optional` result. - -### `init(string:)` - -```swift -public init(string: String) -``` - -Parses the String into a ``EntryID`` -- Parameter string: The String to parse. -You should use this rather than ``init(_:)`` to avoid the `Optional` result. - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| string | The String to parse. You should use this rather than `init(_:)` to avoid the `Optional` result. | - -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | - -### `encode(to:)` - -```swift -public func encode(to encoder: Encoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| encoder | The encoder to write data to. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/enums/MediaContent.md b/Documentation/Reference/SyndiKit/enums/MediaContent.md deleted file mode 100644 index 0c9d0ef..0000000 --- a/Documentation/Reference/SyndiKit/enums/MediaContent.md +++ /dev/null @@ -1,20 +0,0 @@ -**ENUM** - -# `MediaContent` - -```swift -public enum MediaContent -``` - -## Cases -### `podcast(_:)` - -```swift -case podcast(PodcastEpisode) -``` - -### `video(_:)` - -```swift -case video(Video) -``` diff --git a/Documentation/Reference/SyndiKit/enums/SyndicationUpdatePeriod.md b/Documentation/Reference/SyndiKit/enums/SyndicationUpdatePeriod.md deleted file mode 100644 index 85e0721..0000000 --- a/Documentation/Reference/SyndiKit/enums/SyndicationUpdatePeriod.md +++ /dev/null @@ -1,29 +0,0 @@ -**ENUM** - -# `SyndicationUpdatePeriod` - -```swift -public enum SyndicationUpdatePeriod: String, Codable -``` - -Describes the period over which the channel format is updated. - -## Cases -### `hourly` - -```swift -case hourly -``` - -## Methods -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/enums/Video.md b/Documentation/Reference/SyndiKit/enums/Video.md deleted file mode 100644 index ee05326..0000000 --- a/Documentation/Reference/SyndiKit/enums/Video.md +++ /dev/null @@ -1,14 +0,0 @@ -**ENUM** - -# `Video` - -```swift -public enum Video -``` - -## Cases -### `youtube(_:)` - -```swift -case youtube(YouTubeID) -``` diff --git a/Documentation/Reference/SyndiKit/enums/WordPressElements.md b/Documentation/Reference/SyndiKit/enums/WordPressElements.md deleted file mode 100644 index 48d20ac..0000000 --- a/Documentation/Reference/SyndiKit/enums/WordPressElements.md +++ /dev/null @@ -1,7 +0,0 @@ -**ENUM** - -# `WordPressElements` - -```swift -public enum WordPressElements -``` diff --git a/Documentation/Reference/SyndiKit/extensions/AtomEntry.md b/Documentation/Reference/SyndiKit/extensions/AtomEntry.md deleted file mode 100644 index beffadd..0000000 --- a/Documentation/Reference/SyndiKit/extensions/AtomEntry.md +++ /dev/null @@ -1,43 +0,0 @@ -**EXTENSION** - -# `AtomEntry` -```swift -extension AtomEntry: Entryable -``` - -## Properties -### `categories` - -```swift -public var categories: [EntryCategory] -``` - -### `url` - -```swift -public var url: URL -``` - -### `contentHtml` - -```swift -public var contentHtml: String? -``` - -### `summary` - -```swift -public var summary: String? -``` - -### `media` - -```swift -public var media: MediaContent? -``` - -### `imageURL` - -```swift -public var imageURL: URL? -``` diff --git a/Documentation/Reference/SyndiKit/extensions/AtomFeed.md b/Documentation/Reference/SyndiKit/extensions/AtomFeed.md deleted file mode 100644 index 9c0dfae..0000000 --- a/Documentation/Reference/SyndiKit/extensions/AtomFeed.md +++ /dev/null @@ -1,49 +0,0 @@ -**EXTENSION** - -# `AtomFeed` -```swift -extension AtomFeed: DecodableFeed -``` - -## Properties -### `summary` - -```swift -public var summary: String? -``` - -### `children` - -```swift -public var children: [Entryable] -``` - -### `siteURL` - -```swift -public var siteURL: URL? -``` - -### `updated` - -```swift -public var updated: Date? -``` - -### `copyright` - -```swift -public var copyright: String? -``` - -### `image` - -```swift -public var image: URL? -``` - -### `syndication` - -```swift -public var syndication: SyndicationUpdate? -``` diff --git a/Documentation/Reference/SyndiKit/extensions/Entryable.md b/Documentation/Reference/SyndiKit/extensions/Entryable.md deleted file mode 100644 index 1d8182d..0000000 --- a/Documentation/Reference/SyndiKit/extensions/Entryable.md +++ /dev/null @@ -1,13 +0,0 @@ -**EXTENSION** - -# `Entryable` -```swift -public extension Entryable -``` - -## Properties -### `wpPost` - -```swift -var wpPost: WordPressPost? -``` diff --git a/Documentation/Reference/SyndiKit/extensions/JSONFeed.md b/Documentation/Reference/SyndiKit/extensions/JSONFeed.md deleted file mode 100644 index 31d45f4..0000000 --- a/Documentation/Reference/SyndiKit/extensions/JSONFeed.md +++ /dev/null @@ -1,61 +0,0 @@ -**EXTENSION** - -# `JSONFeed` -```swift -extension JSONFeed: DecodableFeed -``` - -## Properties -### `youtubeChannelID` - -```swift -public var youtubeChannelID: String? -``` - -### `children` - -```swift -public var children: [Entryable] -``` - -### `summary` - -```swift -public var summary: String? -``` - -### `siteURL` - -```swift -public var siteURL: URL? -``` - -### `updated` - -```swift -public var updated: Date? -``` - -### `copyright` - -```swift -public var copyright: String? -``` - -### `image` - -```swift -public var image: URL? -``` - -### `syndication` - -```swift -public var syndication: SyndicationUpdate? -``` - -### `authors` - -```swift -public var authors: [Author] -``` diff --git a/Documentation/Reference/SyndiKit/extensions/JSONItem.md b/Documentation/Reference/SyndiKit/extensions/JSONItem.md deleted file mode 100644 index 5e2e14e..0000000 --- a/Documentation/Reference/SyndiKit/extensions/JSONItem.md +++ /dev/null @@ -1,49 +0,0 @@ -**EXTENSION** - -# `JSONItem` -```swift -extension JSONItem: Entryable -``` - -## Properties -### `authors` - -```swift -public var authors: [Author] -``` - -### `imageURL` - -```swift -public var imageURL: URL? -``` - -### `creators` - -```swift -public var creators: [String] -``` - -### `published` - -```swift -public var published: Date? -``` - -### `id` - -```swift -public var id: EntryID -``` - -### `categories` - -```swift -public var categories: [EntryCategory] -``` - -### `media` - -```swift -public var media: MediaContent? -``` diff --git a/Documentation/Reference/SyndiKit/extensions/RSSChannel.md b/Documentation/Reference/SyndiKit/extensions/RSSChannel.md deleted file mode 100644 index f8bbd5c..0000000 --- a/Documentation/Reference/SyndiKit/extensions/RSSChannel.md +++ /dev/null @@ -1,13 +0,0 @@ -**EXTENSION** - -# `RSSChannel` -```swift -public extension RSSChannel -``` - -## Properties -### `syndication` - -```swift -var syndication: SyndicationUpdate? -``` diff --git a/Documentation/Reference/SyndiKit/extensions/RSSFeed.md b/Documentation/Reference/SyndiKit/extensions/RSSFeed.md deleted file mode 100644 index 4e48bf5..0000000 --- a/Documentation/Reference/SyndiKit/extensions/RSSFeed.md +++ /dev/null @@ -1,67 +0,0 @@ -**EXTENSION** - -# `RSSFeed` -```swift -extension RSSFeed: DecodableFeed -``` - -## Properties -### `youtubeChannelID` - -```swift -public var youtubeChannelID: String? -``` - -### `authors` - -```swift -public var authors: [Author] -``` - -### `children` - -```swift -public var children: [Entryable] -``` - -### `title` - -```swift -public var title: String -``` - -### `siteURL` - -```swift -public var siteURL: URL? -``` - -### `summary` - -```swift -public var summary: String? -``` - -### `updated` - -```swift -public var updated: Date? -``` - -### `copyright` - -```swift -public var copyright: String? -``` - -### `image` - -```swift -public var image: URL? -``` - -### `syndication` - -```swift -public var syndication: SyndicationUpdate? -``` diff --git a/Documentation/Reference/SyndiKit/extensions/RSSItem.md b/Documentation/Reference/SyndiKit/extensions/RSSItem.md deleted file mode 100644 index d664821..0000000 --- a/Documentation/Reference/SyndiKit/extensions/RSSItem.md +++ /dev/null @@ -1,61 +0,0 @@ -**EXTENSION** - -# `RSSItem` -```swift -extension RSSItem: Entryable -``` - -## Properties -### `categories` - -```swift -public var categories: [EntryCategory] -``` - -### `url` - -```swift -public var url: URL -``` - -### `contentHtml` - -```swift -public var contentHtml: String? -``` - -### `summary` - -```swift -public var summary: String? -``` - -### `authors` - -```swift -public var authors: [Author] -``` - -### `id` - -```swift -public var id: EntryID -``` - -### `published` - -```swift -public var published: Date? -``` - -### `media` - -```swift -public var media: MediaContent? -``` - -### `imageURL` - -```swift -public var imageURL: URL? -``` diff --git a/Documentation/Reference/SyndiKit/extensions/SiteDirectory.md b/Documentation/Reference/SyndiKit/extensions/SiteDirectory.md deleted file mode 100644 index b3a72b2..0000000 --- a/Documentation/Reference/SyndiKit/extensions/SiteDirectory.md +++ /dev/null @@ -1,16 +0,0 @@ -**EXTENSION** - -# `SiteDirectory` -```swift -public extension SiteDirectory -``` - -## Methods -### `sites(withLanguage:withCategory:)` - -```swift -func sites( - withLanguage language: SiteLanguageType? = nil, - withCategory category: SiteCategoryType? = nil -) -> SiteSequence -``` diff --git a/Documentation/Reference/SyndiKit/extensions/WordPressPost.md b/Documentation/Reference/SyndiKit/extensions/WordPressPost.md deleted file mode 100644 index 028808f..0000000 --- a/Documentation/Reference/SyndiKit/extensions/WordPressPost.md +++ /dev/null @@ -1,13 +0,0 @@ -**EXTENSION** - -# `WordPressPost` -```swift -public extension WordPressPost -``` - -## Methods -### `init(item:)` - -```swift -init(item: RSSItem) throws -``` diff --git a/Documentation/Reference/SyndiKit/protocols/EntryCategory.md b/Documentation/Reference/SyndiKit/protocols/EntryCategory.md deleted file mode 100644 index 48e767f..0000000 --- a/Documentation/Reference/SyndiKit/protocols/EntryCategory.md +++ /dev/null @@ -1,16 +0,0 @@ -**PROTOCOL** - -# `EntryCategory` - -```swift -public protocol EntryCategory -``` - -Abstract category type. - -## Properties -### `term` - -```swift -var term: String -``` diff --git a/Documentation/Reference/SyndiKit/protocols/Entryable.md b/Documentation/Reference/SyndiKit/protocols/Entryable.md deleted file mode 100644 index 63a68cd..0000000 --- a/Documentation/Reference/SyndiKit/protocols/Entryable.md +++ /dev/null @@ -1,98 +0,0 @@ -**PROTOCOL** - -# `Entryable` - -```swift -public protocol Entryable -``` - -Basic Feed type with abstract properties. - -## Properties -### `id` - -```swift -var id: EntryID -``` - -Unique Identifier of the Item. - -### `url` - -```swift -var url: URL -``` - -The URL of the item. - -### `title` - -```swift -var title: String -``` - -The title of the item. - -### `contentHtml` - -```swift -var contentHtml: String? -``` - -HTML content of the item. - -### `summary` - -```swift -var summary: String? -``` - -The item synopsis. - -### `published` - -```swift -var published: Date? -``` - -Indicates when the item was published. - -### `authors` - -```swift -var authors: [Author] -``` - -The author of the item. - -### `categories` - -```swift -var categories: [EntryCategory] -``` - -Includes the item in one or more categories. - -### `creators` - -```swift -var creators: [String] -``` - -Creator of the item. - -### `media` - -```swift -var media: MediaContent? -``` - -Abstraction of Podcast episode or Youtube video info. - -### `imageURL` - -```swift -var imageURL: URL? -``` - -Image URL of the Item. diff --git a/Documentation/Reference/SyndiKit/protocols/Feedable.md b/Documentation/Reference/SyndiKit/protocols/Feedable.md deleted file mode 100644 index ec1c83d..0000000 --- a/Documentation/Reference/SyndiKit/protocols/Feedable.md +++ /dev/null @@ -1,107 +0,0 @@ -**PROTOCOL** - -# `Feedable` - -```swift -public protocol Feedable -``` - -Basic abstract Feed -## Topics - -### Basic Properties - -- ``title`` -- ``siteURL`` -- ``summary`` -- ``updated`` -- ``author`` -- ``copyright`` -- ``image`` -- ``children`` - -### Special Properties - -- ``youtubeChannelID`` -- ``syndication`` - -## Properties -### `title` - -```swift -var title: String -``` - -The name of the channel. - -### `siteURL` - -```swift -var siteURL: URL? -``` - -The URL to the website corresponding to the channel. - -### `summary` - -```swift -var summary: String? -``` - -Phrase or sentence describing the channel. - -### `updated` - -```swift -var updated: Date? -``` - -The last time the content of the channel changed. - -### `authors` - -```swift -var authors: [Author] -``` - -The author of the channel. - -### `copyright` - -```swift -var copyright: String? -``` - -Copyright notice for content in the channel. - -### `image` - -```swift -var image: URL? -``` - -Specifies a GIF, JPEG or PNG image that can be displayed with the channel. - -### `children` - -```swift -var children: [Entryable] -``` - -Items or stories attached to the feed. - -### `youtubeChannelID` - -```swift -var youtubeChannelID: String? -``` - -For YouTube channels, this will be the youtube channel ID. - -### `syndication` - -```swift -var syndication: SyndicationUpdate? -``` - -Provides syndication hints to aggregators and others diff --git a/Documentation/Reference/SyndiKit/protocols/PodcastEpisode.md b/Documentation/Reference/SyndiKit/protocols/PodcastEpisode.md deleted file mode 100644 index b68d452..0000000 --- a/Documentation/Reference/SyndiKit/protocols/PodcastEpisode.md +++ /dev/null @@ -1,62 +0,0 @@ -**PROTOCOL** - -# `PodcastEpisode` - -```swift -public protocol PodcastEpisode -``` - -## Properties -### `title` - -```swift -var title: String? -``` - -### `episode` - -```swift -var episode: Int? -``` - -### `author` - -```swift -var author: String? -``` - -### `subtitle` - -```swift -var subtitle: String? -``` - -### `summary` - -```swift -var summary: String? -``` - -### `explicit` - -```swift -var explicit: String? -``` - -### `duration` - -```swift -var duration: TimeInterval? -``` - -### `image` - -```swift -var image: iTunesImage? -``` - -### `enclosure` - -```swift -var enclosure: Enclosure -``` diff --git a/Documentation/Reference/SyndiKit/protocols/SiteDirectory.md b/Documentation/Reference/SyndiKit/protocols/SiteDirectory.md deleted file mode 100644 index 503d36b..0000000 --- a/Documentation/Reference/SyndiKit/protocols/SiteDirectory.md +++ /dev/null @@ -1,30 +0,0 @@ -**PROTOCOL** - -# `SiteDirectory` - -```swift -public protocol SiteDirectory -``` - -## Properties -### `languages` - -```swift -var languages: LanguageSequence -``` - -### `categories` - -```swift -var categories: CategorySequence -``` - -## Methods -### `sites(withLanguage:withCategory:)` - -```swift -func sites( - withLanguage language: SiteLanguageType?, - withCategory category: SiteCategoryType? -) -> SiteSequence -``` diff --git a/Documentation/Reference/SyndiKit/protocols/SiteDirectoryBuilder.md b/Documentation/Reference/SyndiKit/protocols/SiteDirectoryBuilder.md deleted file mode 100644 index 933b8b1..0000000 --- a/Documentation/Reference/SyndiKit/protocols/SiteDirectoryBuilder.md +++ /dev/null @@ -1,14 +0,0 @@ -**PROTOCOL** - -# `SiteDirectoryBuilder` - -```swift -public protocol SiteDirectoryBuilder -``` - -## Methods -### `directory(fromCollection:)` - -```swift -func directory(fromCollection blogs: SiteCollection) -> SiteDirectoryType -``` diff --git a/Documentation/Reference/SyndiKit/protocols/YouTubeID.md b/Documentation/Reference/SyndiKit/protocols/YouTubeID.md deleted file mode 100644 index 0e004b2..0000000 --- a/Documentation/Reference/SyndiKit/protocols/YouTubeID.md +++ /dev/null @@ -1,30 +0,0 @@ -**PROTOCOL** - -# `YouTubeID` - -```swift -public protocol YouTubeID -``` - -Specific type abstracting the id properties a YouTube RSS Feed. -```xml -3hccNoPE59U -UCv75sKQFFIenWHrprnrR9aA -``` - -## Properties -### `videoID` - -```swift -var videoID: String -``` - -YouTube video ID. - -### `channelID` - -```swift -var channelID: String -``` - -YouTube channel ID. diff --git a/Documentation/Reference/SyndiKit/structs/AtomCategory.md b/Documentation/Reference/SyndiKit/structs/AtomCategory.md deleted file mode 100644 index 1078d88..0000000 --- a/Documentation/Reference/SyndiKit/structs/AtomCategory.md +++ /dev/null @@ -1,14 +0,0 @@ -**STRUCT** - -# `AtomCategory` - -```swift -public struct AtomCategory: Codable, EntryCategory -``` - -## Properties -### `term` - -```swift -public let term: String -``` diff --git a/Documentation/Reference/SyndiKit/structs/AtomEntry.md b/Documentation/Reference/SyndiKit/structs/AtomEntry.md deleted file mode 100644 index 483ffa3..0000000 --- a/Documentation/Reference/SyndiKit/structs/AtomEntry.md +++ /dev/null @@ -1,122 +0,0 @@ -**STRUCT** - -# `AtomEntry` - -```swift -public struct AtomEntry: Codable -``` - -## Properties -### `id` - -```swift -public let id: EntryID -``` - -A permanent, universally unique identifier for an entry. - -### `title` - -```swift -public let title: String -``` - -a Text construct that conveys a human-readable title - -### `published` - -```swift -public let published: Date? -``` - -The most recent instant in time when the entry was published - -### `content` - -```swift -public let content: String? -``` - -Content of the trny. - -### `updated` - -```swift -public let updated: Date -``` - -The most recent instant in time when the entry was modified in a way -the publisher considers significant. - -### `atomCategories` - -```swift -public let atomCategories: [AtomCategory] -``` - -Cateogires of the entry. - -### `links` - -```swift -public let links: [Link] -``` - -a reference to a Web resource. - -### `authors` - -```swift -public let authors: [Author] -``` - -The author of the entry. - -### `youtubeChannelID` - -```swift -public let youtubeChannelID: String? -``` - -YouTube channel ID, if from a YouTube channel. - -### `youtubeVideoID` - -```swift -public let youtubeVideoID: String? -``` - -YouTube video ID, if from a YouTube channel. - -### `mediaDescriptions` - -```swift -public let mediaDescriptions: [String] -``` - -Short description describing the media object typically a sentence in length. -It has one optional attribute. - -### `creators` - -```swift -public let creators: [String] -``` - -the person or entity who wrote an item - -### `mediaContents` - -```swift -public let mediaContents: [AtomMedia] -``` - -Syndicate media content of the entry. - -### `mediaThumbnails` - -```swift -public let mediaThumbnails: [AtomMedia] -``` - -Representative image for the media object. diff --git a/Documentation/Reference/SyndiKit/structs/AtomFeed.md b/Documentation/Reference/SyndiKit/structs/AtomFeed.md deleted file mode 100644 index 66a1bc7..0000000 --- a/Documentation/Reference/SyndiKit/structs/AtomFeed.md +++ /dev/null @@ -1,97 +0,0 @@ -**STRUCT** - -# `AtomFeed` - -```swift -public struct AtomFeed -``` - -An XML-based Web content and metadata syndication format. - -Based on the -[specifications here](https://datatracker.ietf.org/doc/html/rfc4287#section-4.1.2). - -## Properties -### `id` - -```swift -public let id: String -``` - -Identifies the feed using a universally unique and permanent URI. -If you have a long-term, renewable lease on your Internet domain name, -then you can feel free to use your website's address. - -### `title` - -```swift -public let title: String -``` - -Contains a human readable title for the feed. -Often the same as the title of the associated website. - -### `description` - -```swift -public let description: String? -``` - -Contains a human-readable description or subtitle for the feed - -### `subtitle` - -```swift -public let subtitle: String? -``` - -Contains a human-readable description or subtitle for the feed - -### `published` - -```swift -public let published: Date? -``` - -The publication date for the content in the channel. - -### `pubDate` - -```swift -public let pubDate: Date? -``` - -The publication date for the content in the channel. - -### `links` - -```swift -public let links: [Link] -``` - -a reference from an entry or feed to a Web resource. - -### `entries` - -```swift -public let entries: [AtomEntry] -``` - -An individual entry, -acting as a container for metadata and data associated with the entry - -### `authors` - -```swift -public let authors: [Author] -``` - -The author of the feed. - -### `youtubeChannelID` - -```swift -public let youtubeChannelID: String? -``` - -YouTube channel ID, if from a YouTube channel. diff --git a/Documentation/Reference/SyndiKit/structs/AtomMedia.md b/Documentation/Reference/SyndiKit/structs/AtomMedia.md deleted file mode 100644 index 34cf020..0000000 --- a/Documentation/Reference/SyndiKit/structs/AtomMedia.md +++ /dev/null @@ -1,36 +0,0 @@ -**STRUCT** - -# `AtomMedia` - -```swift -public struct AtomMedia: Codable -``` - -Media structure which enables -content publishers and bloggers to syndicate multimedia content -such as TV and video clips, movies, images and audio. - -Fore more detils check out -[the Media RSS Specification](https://www.rssboard.org/media-rss). - -## Properties -### `url` - -```swift -public let url: URL -``` - -The type of object. - - While this attribute can at times seem redundant if type is supplied, - it is included because it simplifies decision making on the reader side, - as well as flushes out any ambiguities between MIME type and object type. - It is an optional attribute. - -### `medium` - -```swift -public let medium: String? -``` - -The direct URL to the media object. diff --git a/Documentation/Reference/SyndiKit/structs/Author.md b/Documentation/Reference/SyndiKit/structs/Author.md deleted file mode 100644 index 582d71c..0000000 --- a/Documentation/Reference/SyndiKit/structs/Author.md +++ /dev/null @@ -1,34 +0,0 @@ -**STRUCT** - -# `Author` - -```swift -public struct Author: Codable, Equatable -``` - -a person, corporation, or similar entity. - -## Properties -### `name` - -```swift -public let name: String -``` - -Conveys a human-readable name for the person. - -### `email` - -```swift -public let email: String? -``` - -Contains an email address for the person. - -### `uri` - -```swift -public let uri: URL? -``` - -Contains a home page for the person. diff --git a/Documentation/Reference/SyndiKit/structs/CData.md b/Documentation/Reference/SyndiKit/structs/CData.md deleted file mode 100644 index 1835476..0000000 --- a/Documentation/Reference/SyndiKit/structs/CData.md +++ /dev/null @@ -1,31 +0,0 @@ -**STRUCT** - -# `CData` - -```swift -public struct CData: Codable -``` - -#CDATA XML element. - -## Properties -### `value` - -```swift -public let value: String -``` - -String value of the #CDATA element. - -## Methods -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/structs/CategoryDescriptor.md b/Documentation/Reference/SyndiKit/structs/CategoryDescriptor.md deleted file mode 100644 index a936bdf..0000000 --- a/Documentation/Reference/SyndiKit/structs/CategoryDescriptor.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `CategoryDescriptor` - -```swift -public struct CategoryDescriptor -``` - -## Properties -### `title` - -```swift -public let title: String -``` - -### `description` - -```swift -public let description: String -``` diff --git a/Documentation/Reference/SyndiKit/structs/CategoryLanguage.md b/Documentation/Reference/SyndiKit/structs/CategoryLanguage.md deleted file mode 100644 index 0ec9906..0000000 --- a/Documentation/Reference/SyndiKit/structs/CategoryLanguage.md +++ /dev/null @@ -1,26 +0,0 @@ -**STRUCT** - -# `CategoryLanguage` - -```swift -public struct CategoryLanguage -``` - -## Properties -### `type` - -```swift -public let type: SiteCategoryType -``` - -### `descriptor` - -```swift -public let descriptor: CategoryDescriptor -``` - -### `language` - -```swift -public let language: SiteLanguageType -``` diff --git a/Documentation/Reference/SyndiKit/structs/Enclosure.md b/Documentation/Reference/SyndiKit/structs/Enclosure.md deleted file mode 100644 index 8d98695..0000000 --- a/Documentation/Reference/SyndiKit/structs/Enclosure.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `Enclosure` - -```swift -public struct Enclosure: Codable -``` - -## Methods -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/structs/JSONFeed.md b/Documentation/Reference/SyndiKit/structs/JSONFeed.md deleted file mode 100644 index a5c16b3..0000000 --- a/Documentation/Reference/SyndiKit/structs/JSONFeed.md +++ /dev/null @@ -1,46 +0,0 @@ -**STRUCT** - -# `JSONFeed` - -```swift -public struct JSONFeed -``` - -## Properties -### `version` - -```swift -public let version: URL -``` - -### `title` - -```swift -public let title: String -``` - -### `homePageUrl` - -```swift -public let homePageUrl: URL -``` - -### `description` - -```swift -public let description: String? -``` - -### `author` - -```swift -public let author: Author? -``` - -The author of the feed. - -### `items` - -```swift -public let items: [JSONItem] -``` diff --git a/Documentation/Reference/SyndiKit/structs/JSONItem.md b/Documentation/Reference/SyndiKit/structs/JSONItem.md deleted file mode 100644 index 6ea7b7c..0000000 --- a/Documentation/Reference/SyndiKit/structs/JSONItem.md +++ /dev/null @@ -1,52 +0,0 @@ -**STRUCT** - -# `JSONItem` - -```swift -public struct JSONItem: Codable -``` - -## Properties -### `guid` - -```swift -public let guid: EntryID -``` - -### `url` - -```swift -public let url: URL -``` - -### `title` - -```swift -public let title: String -``` - -### `contentHtml` - -```swift -public let contentHtml: String? -``` - -### `summary` - -```swift -public let summary: String? -``` - -### `datePublished` - -```swift -public let datePublished: Date? -``` - -### `author` - -```swift -public let author: Author? -``` - -The author of the item. diff --git a/Documentation/Reference/SyndiKit/structs/Link.md b/Documentation/Reference/SyndiKit/structs/Link.md deleted file mode 100644 index 91a35e0..0000000 --- a/Documentation/Reference/SyndiKit/structs/Link.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `Link` - -```swift -public struct Link: Codable -``` - -## Properties -### `href` - -```swift -public let href: URL -``` - -### `rel` - -```swift -public let rel: String? -``` diff --git a/Documentation/Reference/SyndiKit/structs/RSSChannel.md b/Documentation/Reference/SyndiKit/structs/RSSChannel.md deleted file mode 100644 index b7dd8b6..0000000 --- a/Documentation/Reference/SyndiKit/structs/RSSChannel.md +++ /dev/null @@ -1,138 +0,0 @@ -**STRUCT** - -# `RSSChannel` - -```swift -public struct RSSChannel: Codable -``` - -information about the channel (metadata) and its contents. - -## Properties -### `title` - -```swift -public let title: String -``` - -The name of the channel. - -### `link` - -```swift -public let link: URL -``` - -The URL to the HTML website corresponding to the channel. - -### `description` - -```swift -public let description: String? -``` - -Phrase or sentence describing the channel. - -### `lastBuildDate` - -```swift -public let lastBuildDate: Date? -``` - -The last time the content of the channel changed. - -### `pubDate` - -```swift -public let pubDate: Date? -``` - -indicates the publication date and time of the feed's content - -### `ttl` - -```swift -public let ttl: Int? -``` - -ttl stands for time to live. -It's a number of minutes -that indicates how long a channel can be cached -before refreshing from the source. - -### `syUpdatePeriod` - -```swift -public let syUpdatePeriod: SyndicationUpdatePeriod? -``` - -Describes the period over which the channel format is updated. - -### `syUpdateFrequency` - -```swift -public let syUpdateFrequency: SyndicationUpdateFrequency? -``` - -Used to describe the frequency of updates -in relation to the update period. -A positive integer indicates -how many times in that period the channel is updated. - -### `items` - -```swift -public let items: [RSSItem] -``` - -### `itunesAuthor` - -```swift -public let itunesAuthor: String? -``` - -### `itunesImage` - -```swift -public let itunesImage: String? -``` - -### `itunesOwner` - -```swift -public let itunesOwner: iTunesOwner? -``` - -### `copyright` - -```swift -public let copyright: String? -``` - -Copyright notice for content in the channel. - -### `image` - -```swift -public let image: RSSImage? -``` - -Specifies a GIF, JPEG or PNG image that can be displayed with the channel. - -### `author` - -```swift -public let author: Author? -``` - -### `wpCategories` - -```swift -public let wpCategories: [WordPressElements.Category] -``` - -### `wpTags` - -```swift -public let wpTags: [WordPressElements.Tag] -``` diff --git a/Documentation/Reference/SyndiKit/structs/RSSFeed.md b/Documentation/Reference/SyndiKit/structs/RSSFeed.md deleted file mode 100644 index f920c01..0000000 --- a/Documentation/Reference/SyndiKit/structs/RSSFeed.md +++ /dev/null @@ -1,28 +0,0 @@ -**STRUCT** - -# `RSSFeed` - -```swift -public struct RSSFeed -``` - -RSS is a Web content syndication format. - -Its name is an acronym for Really Simple Syndication. -RSS is dialect of XML. -All RSS files must conform to the XML 1.0 specification, -as published on the World Wide Web Consortium (W3C) website. -At the top level, a RSS document is a element, -with a mandatory attribute called version, -that specifies the version of RSS that the document conforms to. -If it conforms to this specification, -the version attribute must be 2.0. -For more details, check out the -[W3 sepcifications.](https://validator.w3.org/feed/docs/rss2.html) - -## Properties -### `channel` - -```swift -public let channel: RSSChannel -``` diff --git a/Documentation/Reference/SyndiKit/structs/RSSImage.md b/Documentation/Reference/SyndiKit/structs/RSSImage.md deleted file mode 100644 index e28bb2f..0000000 --- a/Documentation/Reference/SyndiKit/structs/RSSImage.md +++ /dev/null @@ -1,66 +0,0 @@ -**STRUCT** - -# `RSSImage` - -```swift -public struct RSSImage: Codable -``` - -Specifies a GIF, JPEG or PNG image. - -## Properties -### `url` - -```swift -public let url: URL -``` - -The URL of a GIF, JPEG or PNG image - -### `title` - -```swift -public let title: String -``` - -Describes the image. - -It's used in the ALT attribute of the HTML tag -when the channel is rendered in HTML. - -### `link` - -```swift -public let link: URL -``` - -The URL of the site, when the channel is rendered, -the image is a link to the site. - -In practice the image and <link> should have -the same value as the channel's <title> and <link> - -### `width` - -```swift -public let width: Int? -``` - -The width of the image in pixels. - -### `height` - -```swift -public let height: Int? -``` - -The height of the image in pixels. - -### `description` - -```swift -public let description: String? -``` - -This contains text that is included in the TITLE attribute -of the link formed around the image in the HTML rendering. diff --git a/Documentation/Reference/SyndiKit/structs/RSSItem.md b/Documentation/Reference/SyndiKit/structs/RSSItem.md deleted file mode 100644 index 85b8d4f..0000000 --- a/Documentation/Reference/SyndiKit/structs/RSSItem.md +++ /dev/null @@ -1,231 +0,0 @@ -**STRUCT** - -# `RSSItem` - -```swift -public struct RSSItem: Codable -``` - -## Properties -### `title` - -```swift -public let title: String -``` - -### `link` - -```swift -public let link: URL -``` - -### `description` - -```swift -public let description: CData -``` - -### `guid` - -```swift -public let guid: EntryID -``` - -### `pubDate` - -```swift -public let pubDate: Date? -``` - -### `contentEncoded` - -```swift -public let contentEncoded: CData? -``` - -### `categoryTerms` - -```swift -public let categoryTerms: [RSSItemCategory] -``` - -### `content` - -```swift -public let content: String? -``` - -### `itunesTitle` - -```swift -public let itunesTitle: String? -``` - -### `itunesEpisode` - -```swift -public let itunesEpisode: iTunesEpisode? -``` - -### `itunesAuthor` - -```swift -public let itunesAuthor: String? -``` - -### `itunesSubtitle` - -```swift -public let itunesSubtitle: String? -``` - -### `itunesSummary` - -```swift -public let itunesSummary: String? -``` - -### `itunesExplicit` - -```swift -public let itunesExplicit: String? -``` - -### `itunesDuration` - -```swift -public let itunesDuration: iTunesDuration? -``` - -### `itunesImage` - -```swift -public let itunesImage: iTunesImage? -``` - -### `enclosure` - -```swift -public let enclosure: Enclosure? -``` - -### `creators` - -```swift -public let creators: [String] -``` - -### `wpCommentStatus` - -```swift -public let wpCommentStatus: CData? -``` - -### `wpPingStatus` - -```swift -public let wpPingStatus: CData? -``` - -### `wpStatus` - -```swift -public let wpStatus: CData? -``` - -### `wpPostParent` - -```swift -public let wpPostParent: Int? -``` - -### `wpMenuOrder` - -```swift -public let wpMenuOrder: Int? -``` - -### `wpIsSticky` - -```swift -public let wpIsSticky: Int? -``` - -### `wpPostPassword` - -```swift -public let wpPostPassword: CData? -``` - -### `wpPostID` - -```swift -public let wpPostID: Int? -``` - -### `wpPostDate` - -```swift -public let wpPostDate: Date? -``` - -### `wpPostDateGMT` - -```swift -public let wpPostDateGMT: Date? -``` - -### `wpModifiedDate` - -```swift -public let wpModifiedDate: Date? -``` - -### `wpModifiedDateGMT` - -```swift -public let wpModifiedDateGMT: Date? -``` - -### `wpPostName` - -```swift -public let wpPostName: CData? -``` - -### `wpPostType` - -```swift -public let wpPostType: CData? -``` - -### `wpPostMeta` - -```swift -public let wpPostMeta: [WordPressElements.PostMeta]? -``` - -### `mediaContent` - -```swift -public let mediaContent: AtomMedia? -``` - -### `mediaThumbnail` - -```swift -public let mediaThumbnail: AtomMedia? -``` - -## Methods -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/structs/RSSItemCategory.md b/Documentation/Reference/SyndiKit/structs/RSSItemCategory.md deleted file mode 100644 index 4b0f32e..0000000 --- a/Documentation/Reference/SyndiKit/structs/RSSItemCategory.md +++ /dev/null @@ -1,45 +0,0 @@ -**STRUCT** - -# `RSSItemCategory` - -```swift -public struct RSSItemCategory: Codable, EntryCategory -``` - -## Properties -### `term` - -```swift -public var term: String -``` - -### `value` - -```swift -public let value: String -``` - -### `domain` - -```swift -public let domain: String? -``` - -### `nicename` - -```swift -public let nicename: String? -``` - -## Methods -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/structs/Site.md b/Documentation/Reference/SyndiKit/structs/Site.md deleted file mode 100644 index 52a0aea..0000000 --- a/Documentation/Reference/SyndiKit/structs/Site.md +++ /dev/null @@ -1,50 +0,0 @@ -**STRUCT** - -# `Site` - -```swift -public struct Site -``` - -## Properties -### `title` - -```swift -public let title: String -``` - -### `author` - -```swift -public let author: String -``` - -### `siteURL` - -```swift -public let siteURL: URL -``` - -### `feedURL` - -```swift -public let feedURL: URL -``` - -### `twitterURL` - -```swift -public let twitterURL: URL? -``` - -### `category` - -```swift -public let category: SiteCategoryType -``` - -### `language` - -```swift -public let language: SiteLanguageType -``` diff --git a/Documentation/Reference/SyndiKit/structs/SiteCategory.md b/Documentation/Reference/SyndiKit/structs/SiteCategory.md deleted file mode 100644 index 48c7952..0000000 --- a/Documentation/Reference/SyndiKit/structs/SiteCategory.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `SiteCategory` - -```swift -public struct SiteCategory -``` - -## Properties -### `type` - -```swift -public let type: SiteCategoryType -``` - -### `descriptors` - -```swift -public let descriptors: [SiteLanguageType: CategoryDescriptor] -``` diff --git a/Documentation/Reference/SyndiKit/structs/SiteCollectionDirectory.md b/Documentation/Reference/SyndiKit/structs/SiteCollectionDirectory.md deleted file mode 100644 index 02492dc..0000000 --- a/Documentation/Reference/SyndiKit/structs/SiteCollectionDirectory.md +++ /dev/null @@ -1,34 +0,0 @@ -**STRUCT** - -# `SiteCollectionDirectory` - -```swift -public struct SiteCollectionDirectory: SiteDirectory -``` - -## Properties -### `languages` - -```swift -public var languages: Dictionary< - SiteLanguageType, SiteLanguage ->.Values -``` - -### `categories` - -```swift -public var categories: Dictionary< - SiteCategoryType, SiteCategory ->.Values -``` - -## Methods -### `sites(withLanguage:withCategory:)` - -```swift -public func sites( - withLanguage language: SiteLanguageType?, - withCategory category: SiteCategoryType? -) -> [Site] -``` diff --git a/Documentation/Reference/SyndiKit/structs/SiteCollectionDirectoryBuilder.md b/Documentation/Reference/SyndiKit/structs/SiteCollectionDirectoryBuilder.md deleted file mode 100644 index 8d9dcad..0000000 --- a/Documentation/Reference/SyndiKit/structs/SiteCollectionDirectoryBuilder.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `SiteCollectionDirectoryBuilder` - -```swift -public struct SiteCollectionDirectoryBuilder: SiteDirectoryBuilder -``` - -## Methods -### `init()` - -```swift -public init() -``` - -### `directory(fromCollection:)` - -```swift -public func directory(fromCollection blogs: SiteCollection) -> SiteCollectionDirectory -``` diff --git a/Documentation/Reference/SyndiKit/structs/SiteLanguage.md b/Documentation/Reference/SyndiKit/structs/SiteLanguage.md deleted file mode 100644 index 74adc91..0000000 --- a/Documentation/Reference/SyndiKit/structs/SiteLanguage.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `SiteLanguage` - -```swift -public struct SiteLanguage -``` - -## Properties -### `type` - -```swift -public let type: SiteLanguageType -``` - -### `title` - -```swift -public let title: String -``` diff --git a/Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.Site.md b/Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.Site.md deleted file mode 100644 index b6c9829..0000000 --- a/Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.Site.md +++ /dev/null @@ -1,38 +0,0 @@ -**STRUCT** - -# `SiteLanguageCategory.Site` - -```swift -struct Site: Codable -``` - -## Properties -### `title` - -```swift -public let title: String -``` - -### `author` - -```swift -public let author: String -``` - -### `siteURL` - -```swift -public let siteURL: URL -``` - -### `feedURL` - -```swift -public let feedURL: URL -``` - -### `twitterURL` - -```swift -public let twitterURL: URL? -``` diff --git a/Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.md b/Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.md deleted file mode 100644 index 0d891ae..0000000 --- a/Documentation/Reference/SyndiKit/structs/SiteLanguageCategory.md +++ /dev/null @@ -1,32 +0,0 @@ -**STRUCT** - -# `SiteLanguageCategory` - -```swift -public struct SiteLanguageCategory: Codable -``` - -## Properties -### `title` - -```swift -public let title: String -``` - -### `slug` - -```swift -public let slug: String -``` - -### `description` - -```swift -public let description: String -``` - -### `sites` - -```swift -public let sites: [Site] -``` diff --git a/Documentation/Reference/SyndiKit/structs/SiteLanguageContent.md b/Documentation/Reference/SyndiKit/structs/SiteLanguageContent.md deleted file mode 100644 index e62f8bb..0000000 --- a/Documentation/Reference/SyndiKit/structs/SiteLanguageContent.md +++ /dev/null @@ -1,26 +0,0 @@ -**STRUCT** - -# `SiteLanguageContent` - -```swift -public struct SiteLanguageContent: Codable -``` - -## Properties -### `language` - -```swift -public let language: String -``` - -### `title` - -```swift -public let title: String -``` - -### `categories` - -```swift -public let categories: [SiteLanguageCategory] -``` diff --git a/Documentation/Reference/SyndiKit/structs/SyndicationUpdate.md b/Documentation/Reference/SyndiKit/structs/SyndicationUpdate.md deleted file mode 100644 index ba09205..0000000 --- a/Documentation/Reference/SyndiKit/structs/SyndicationUpdate.md +++ /dev/null @@ -1,46 +0,0 @@ -**STRUCT** - -# `SyndicationUpdate` - -```swift -public struct SyndicationUpdate: Codable, Equatable -``` - -Properties concerning how often it is updated a feed is updated. - -These properties come from - [the RDF Site Summary Syndication Module](https://web.resource.org/rss/1.0/modules/syndication/). - -## Properties -### `period` - -```swift -public let period: SyndicationUpdatePeriod -``` - -Describes the period over which the channel format is updated. -The default value is ``SyndicationUpdatePeriod/daily``. - -### `frequency` - -```swift -public let frequency: Int -``` - -Used to describe the frequency of updates in relation to the update period. -The default value is 1. - -A positive integer indicates how many times in that period the channel is updated. -For example, an updatePeriod of daily, and an updateFrequency of 2 -indicates the channel format is updated twice daily. - -### `base` - -```swift -public let base: Date? -``` - -Defines a base date -to be used in concert with -``SyndicationUpdate/period`` and ``SyndicationUpdate/frequency`` - to calculate the publishing schedule. diff --git a/Documentation/Reference/SyndiKit/structs/WordPressElements.Category.md b/Documentation/Reference/SyndiKit/structs/WordPressElements.Category.md deleted file mode 100644 index 5a96e4d..0000000 --- a/Documentation/Reference/SyndiKit/structs/WordPressElements.Category.md +++ /dev/null @@ -1,7 +0,0 @@ -**STRUCT** - -# `WordPressElements.Category` - -```swift -struct Category: Codable -``` diff --git a/Documentation/Reference/SyndiKit/structs/WordPressElements.PostMeta.md b/Documentation/Reference/SyndiKit/structs/WordPressElements.PostMeta.md deleted file mode 100644 index 02de7b3..0000000 --- a/Documentation/Reference/SyndiKit/structs/WordPressElements.PostMeta.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `WordPressElements.PostMeta` - -```swift -struct PostMeta: Codable -``` - -## Properties -### `key` - -```swift -public let key: CData -``` - -### `value` - -```swift -public let value: CData -``` diff --git a/Documentation/Reference/SyndiKit/structs/WordPressElements.Tag.md b/Documentation/Reference/SyndiKit/structs/WordPressElements.Tag.md deleted file mode 100644 index c5e4d2f..0000000 --- a/Documentation/Reference/SyndiKit/structs/WordPressElements.Tag.md +++ /dev/null @@ -1,7 +0,0 @@ -**STRUCT** - -# `WordPressElements.Tag` - -```swift -struct Tag: Codable -``` diff --git a/Documentation/Reference/SyndiKit/structs/WordPressPost.md b/Documentation/Reference/SyndiKit/structs/WordPressPost.md deleted file mode 100644 index 2ddb417..0000000 --- a/Documentation/Reference/SyndiKit/structs/WordPressPost.md +++ /dev/null @@ -1,134 +0,0 @@ -**STRUCT** - -# `WordPressPost` - -```swift -public struct WordPressPost -``` - -## Properties -### `name` - -```swift -public let name: String -``` - -### `title` - -```swift -public let title: String -``` - -### `type` - -```swift -public let type: PostType -``` - -### `link` - -```swift -public let link: URL -``` - -### `pubDate` - -```swift -public let pubDate: Date? -``` - -### `creator` - -```swift -public let creator: String -``` - -### `body` - -```swift -public let body: String -``` - -### `tags` - -```swift -public let tags: [String] -``` - -### `categories` - -```swift -public let categories: [String] -``` - -### `meta` - -```swift -public let meta: [String: String] -``` - -### `status` - -```swift -public let status: Status -``` - -### `commentStatus` - -```swift -public let commentStatus: CommentStatus -``` - -### `pingStatus` - -```swift -public let pingStatus: PingStatus -``` - -### `parentID` - -```swift -public let parentID: Int? -``` - -### `menuOrder` - -```swift -public let menuOrder: Int? -``` - -### `ID` - -```swift -public let ID: Int -``` - -### `isSticky` - -```swift -public let isSticky: Bool -``` - -### `postDate` - -```swift -public let postDate: Date -``` - -### `postDateGMT` - -```swift -public let postDateGMT: Date? -``` - -### `modifiedDate` - -```swift -public let modifiedDate: Date -``` - -### `modifiedDateGMT` - -```swift -public let modifiedDateGMT: Date? -``` diff --git a/Documentation/Reference/SyndiKit/structs/XMLStringInt.md b/Documentation/Reference/SyndiKit/structs/XMLStringInt.md deleted file mode 100644 index e131836..0000000 --- a/Documentation/Reference/SyndiKit/structs/XMLStringInt.md +++ /dev/null @@ -1,31 +0,0 @@ -**STRUCT** - -# `XMLStringInt` - -```swift -public struct XMLStringInt: Codable -``` - -XML Element which contains a `String` parsable into a `Integer`. - -## Properties -### `value` - -```swift -public let value: Int -``` - -The underlying `Int` value. - -## Methods -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/structs/iTunesDuration.md b/Documentation/Reference/SyndiKit/structs/iTunesDuration.md deleted file mode 100644 index 159d0c6..0000000 --- a/Documentation/Reference/SyndiKit/structs/iTunesDuration.md +++ /dev/null @@ -1,33 +0,0 @@ -**STRUCT** - -# `iTunesDuration` - -```swift -public struct iTunesDuration: Codable -``` - -## Properties -### `value` - -```swift -public let value: TimeInterval -``` - -## Methods -### `init(from:)` - -```swift -public init(from decoder: Decoder) throws -``` - -#### Parameters - -| Name | Description | -| ---- | ----------- | -| decoder | The decoder to read data from. | - -### `init(_:)` - -```swift -public init?(_ description: String) -``` diff --git a/Documentation/Reference/SyndiKit/structs/iTunesOwner.md b/Documentation/Reference/SyndiKit/structs/iTunesOwner.md deleted file mode 100644 index f87812c..0000000 --- a/Documentation/Reference/SyndiKit/structs/iTunesOwner.md +++ /dev/null @@ -1,20 +0,0 @@ -**STRUCT** - -# `iTunesOwner` - -```swift -public struct iTunesOwner: Codable -``` - -## Properties -### `name` - -```swift -public let name: String -``` - -### `email` - -```swift -public let email: String -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SiteCategoryType.md b/Documentation/Reference/SyndiKit/typealiases/SiteCategoryType.md deleted file mode 100644 index 4e0337e..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SiteCategoryType.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `SiteCategoryType` - -```swift -public typealias SiteCategoryType = String -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SiteCollection.md b/Documentation/Reference/SyndiKit/typealiases/SiteCollection.md deleted file mode 100644 index cd7331c..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SiteCollection.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `SiteCollection` - -```swift -public typealias SiteCollection = [SiteLanguageContent] -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.CategorySequence.md b/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.CategorySequence.md deleted file mode 100644 index e5c19b0..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.CategorySequence.md +++ /dev/null @@ -1,8 +0,0 @@ -**TYPEALIAS** - -# `SiteCollectionDirectory.CategorySequence` - -```swift -public typealias CategorySequence = - Dictionary<SiteCategoryType, SiteCategory>.Values -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.LanguageSequence.md b/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.LanguageSequence.md deleted file mode 100644 index 1ab165c..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.LanguageSequence.md +++ /dev/null @@ -1,8 +0,0 @@ -**TYPEALIAS** - -# `SiteCollectionDirectory.LanguageSequence` - -```swift -public typealias LanguageSequence = - Dictionary<SiteLanguageType, SiteLanguage>.Values -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.SiteSequence.md b/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.SiteSequence.md deleted file mode 100644 index ccf4a4b..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SiteCollectionDirectory.SiteSequence.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `SiteCollectionDirectory.SiteSequence` - -```swift -public typealias SiteSequence = [Site] -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SiteLanguageType.md b/Documentation/Reference/SyndiKit/typealiases/SiteLanguageType.md deleted file mode 100644 index 3e947b0..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SiteLanguageType.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `SiteLanguageType` - -```swift -public typealias SiteLanguageType = String -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SiteStub.md b/Documentation/Reference/SyndiKit/typealiases/SiteStub.md deleted file mode 100644 index f868991..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SiteStub.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `SiteStub` - -```swift -public typealias SiteStub = SiteLanguageCategory.Site -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/SyndicationUpdateFrequency.md b/Documentation/Reference/SyndiKit/typealiases/SyndicationUpdateFrequency.md deleted file mode 100644 index 871f63f..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/SyndicationUpdateFrequency.md +++ /dev/null @@ -1,12 +0,0 @@ -**TYPEALIAS** - -# `SyndicationUpdateFrequency` - -```swift -public typealias SyndicationUpdateFrequency = XMLStringInt -``` - -Used to describe the frequency of updates -in relation to the update period. -A positive integer indicates -how many times in that period the channel is updated. \ No newline at end of file diff --git a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.CommentStatus.md b/Documentation/Reference/SyndiKit/typealiases/WordPressPost.CommentStatus.md deleted file mode 100644 index 519b700..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.CommentStatus.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `WordPressPost.CommentStatus` - -```swift -public typealias CommentStatus = String -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.PingStatus.md b/Documentation/Reference/SyndiKit/typealiases/WordPressPost.PingStatus.md deleted file mode 100644 index f304576..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.PingStatus.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `WordPressPost.PingStatus` - -```swift -public typealias PingStatus = String -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.PostType.md b/Documentation/Reference/SyndiKit/typealiases/WordPressPost.PostType.md deleted file mode 100644 index a6531af..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.PostType.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `WordPressPost.PostType` - -```swift -public typealias PostType = String -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.Status.md b/Documentation/Reference/SyndiKit/typealiases/WordPressPost.Status.md deleted file mode 100644 index 02aa91f..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/WordPressPost.Status.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `WordPressPost.Status` - -```swift -public typealias Status = String -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/iTunesEpisode.md b/Documentation/Reference/SyndiKit/typealiases/iTunesEpisode.md deleted file mode 100644 index f493907..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/iTunesEpisode.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `iTunesEpisode` - -```swift -public typealias iTunesEpisode = XMLStringInt -``` diff --git a/Documentation/Reference/SyndiKit/typealiases/iTunesImage.md b/Documentation/Reference/SyndiKit/typealiases/iTunesImage.md deleted file mode 100644 index 64d3e9a..0000000 --- a/Documentation/Reference/SyndiKit/typealiases/iTunesImage.md +++ /dev/null @@ -1,7 +0,0 @@ -**TYPEALIAS** - -# `iTunesImage` - -```swift -public typealias iTunesImage = Link -``` diff --git a/Package.resolved b/Package.resolved index e2bcc25..ff61571 100644 --- a/Package.resolved +++ b/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/CoreOffice/XMLCoder", "state": { "branch": null, - "revision": "666227de3b4cf4adcce7c70b8b89f98c7df02754", - "version": "0.16.0" + "revision": "b1e944cbd0ef33787b13f639a5418d55b3bed501", + "version": "0.17.1" } } ] diff --git a/Sources/SyndiKit/Common/Primitives/CData.swift b/Sources/SyndiKit/Common/Primitives/CData.swift index 45bedac..3d7b0e8 100644 --- a/Sources/SyndiKit/Common/Primitives/CData.swift +++ b/Sources/SyndiKit/Common/Primitives/CData.swift @@ -1,5 +1,5 @@ /// #CDATA XML element. -public struct CData: Codable, ExpressibleByStringLiteral { +public struct CData: Codable, ExpressibleByStringLiteral, Equatable { public typealias StringLiteralType = String public init(stringLiteral value: String) { diff --git a/Sources/SyndiKit/Formats/Feeds/RSS/RSSItem.swift b/Sources/SyndiKit/Formats/Feeds/RSS/RSSItem.swift index f6c91c0..18a6052 100644 --- a/Sources/SyndiKit/Formats/Feeds/RSS/RSSItem.swift +++ b/Sources/SyndiKit/Formats/Feeds/RSS/RSSItem.swift @@ -18,6 +18,7 @@ public struct RSSItem: Codable { public let itunesExplicit: String? public let itunesDuration: iTunesDuration? public let itunesImage: iTunesImage? + public let podcastPerson: [PodcastPerson]? public let enclosure: Enclosure? public let creators: [String] public let wpCommentStatus: CData? @@ -57,6 +58,7 @@ public struct RSSItem: Codable { itunesExplicit: String? = nil, itunesDuration: TimeInterval? = nil, itunesImage: iTunesImage? = nil, + podcastPerson: [PodcastPerson]? = nil, enclosure: Enclosure? = nil, creators: [String] = [], wpCommentStatus: String? = nil, @@ -94,6 +96,7 @@ public struct RSSItem: Codable { self.itunesExplicit = itunesExplicit self.itunesDuration = itunesDuration.map(iTunesDuration.init) self.itunesImage = itunesImage + self.podcastPerson = podcastPerson self.enclosure = enclosure self.creators = creators self.wpCommentStatus = wpCommentStatus.map(CData.init) @@ -139,6 +142,12 @@ public struct RSSItem: Codable { iTunesDuration.self, forKey: .itunesDuration ) itunesImage = try container.decodeIfPresent(iTunesImage.self, forKey: .itunesImage) + + podcastPerson = try container.decodeIfPresent( + [PodcastPerson].self, + forKey: .podcastPerson + ) + enclosure = try container.decodeIfPresent(Enclosure.self, forKey: .enclosure) creators = try container.decode([String].self, forKey: .creators) @@ -222,6 +231,7 @@ public struct RSSItem: Codable { case itunesSubtitle = "itunes:subtitle" case itunesSummary = "itunes:summary" case itunesExplicit = "itunes:explicit" + case podcastPerson = "podcast:person" case itunesDuration = "itunes:duration" case itunesImage = "itunes:image" case creators = "dc:creator" diff --git a/Sources/SyndiKit/Formats/Media/Podcast/PodcastPerson.swift b/Sources/SyndiKit/Formats/Media/Podcast/PodcastPerson.swift new file mode 100644 index 0000000..45494ab --- /dev/null +++ b/Sources/SyndiKit/Formats/Media/Podcast/PodcastPerson.swift @@ -0,0 +1,18 @@ +import Foundation + +public struct PodcastPerson: Codable { + public let email: String? + public let role: String + public let href: String + public let img: URL? + + public let name: String + + enum CodingKeys: String, CodingKey { + case email + case role + case href + case img + case name = "" + } +} diff --git a/Sources/SyndiKit/Formats/Media/PodcastEpisode.swift b/Sources/SyndiKit/Formats/Media/PodcastEpisode.swift index 941f500..97bca65 100644 --- a/Sources/SyndiKit/Formats/Media/PodcastEpisode.swift +++ b/Sources/SyndiKit/Formats/Media/PodcastEpisode.swift @@ -9,6 +9,7 @@ public protocol PodcastEpisode { var duration: TimeInterval? { get } var image: iTunesImage? { get } var enclosure: Enclosure { get } + var people: [PodcastPerson] { get } } struct PodcastEpisodeProperties: PodcastEpisode { @@ -21,6 +22,7 @@ struct PodcastEpisodeProperties: PodcastEpisode { public let duration: TimeInterval? public let image: iTunesImage? public let enclosure: Enclosure + public let people: [PodcastPerson] init?(rssItem: RSSItem) { guard let enclosure = rssItem.enclosure else { @@ -35,5 +37,6 @@ struct PodcastEpisodeProperties: PodcastEpisode { duration = rssItem.itunesDuration?.value image = rssItem.itunesImage self.enclosure = enclosure + people = rssItem.podcastPerson ?? [] } } diff --git a/Sources/SyndiKit/Formats/Media/Wordpress/WPCategory.swift b/Sources/SyndiKit/Formats/Media/Wordpress/WPCategory.swift index 32d7a75..f7b55f6 100644 --- a/Sources/SyndiKit/Formats/Media/Wordpress/WPCategory.swift +++ b/Sources/SyndiKit/Formats/Media/Wordpress/WPCategory.swift @@ -2,10 +2,10 @@ import Foundation public extension WordPressElements { struct Category: Codable { - let termID: Int - let niceName: CData - let parent: CData - let name: String + public let termID: Int + public let niceName: CData + public let parent: CData + public let name: String enum CodingKeys: String, CodingKey { case termID = "wp:termId" @@ -15,3 +15,12 @@ public extension WordPressElements { } } } + +extension WordPressElements.Category: Equatable { + public static func == (lhs: WordPressElements.Category, rhs: WordPressElements.Category) -> Bool { + lhs.termID == rhs.termID + && lhs.niceName == rhs.niceName + && lhs.parent == rhs.parent + && lhs.name == rhs.name + } +} diff --git a/Sources/SyndiKit/Formats/Media/Wordpress/WPPostMeta.swift b/Sources/SyndiKit/Formats/Media/Wordpress/WPPostMeta.swift index 0623e6b..80e34cd 100644 --- a/Sources/SyndiKit/Formats/Media/Wordpress/WPPostMeta.swift +++ b/Sources/SyndiKit/Formats/Media/Wordpress/WPPostMeta.swift @@ -2,11 +2,6 @@ import Foundation public extension WordPressElements { struct PostMeta: Codable { - public init(key: String, value: String) { - self.key = .init(stringLiteral: key) - self.value = .init(stringLiteral: value) - } - public let key: CData public let value: CData @@ -14,5 +9,17 @@ public extension WordPressElements { case key = "wp:metaKey" case value = "wp:metaValue" } + + public init(key: String, value: String) { + self.key = .init(stringLiteral: key) + self.value = .init(stringLiteral: value) + } + } +} + +extension WordPressElements.PostMeta: Equatable { + public static func == (lhs: WordPressElements.PostMeta, rhs: WordPressElements.PostMeta) -> Bool { + lhs.key == rhs.key + && lhs.value == rhs.value } } diff --git a/Sources/SyndiKit/Formats/Media/Wordpress/WPTag.swift b/Sources/SyndiKit/Formats/Media/Wordpress/WPTag.swift index 7b3301b..ab6a7ca 100644 --- a/Sources/SyndiKit/Formats/Media/Wordpress/WPTag.swift +++ b/Sources/SyndiKit/Formats/Media/Wordpress/WPTag.swift @@ -1,9 +1,10 @@ import Foundation + public extension WordPressElements { struct Tag: Codable { - let termID: Int - let slug: CData - let name: CData + public let termID: Int + public let slug: CData + public let name: CData enum CodingKeys: String, CodingKey { case termID = "wp:termId" @@ -12,3 +13,12 @@ public extension WordPressElements { } } } + +extension WordPressElements.Tag: Equatable { + public static func == (lhs: WordPressElements.Tag, rhs: WordPressElements.Tag) -> Bool { + lhs.termID == rhs.termID + && lhs.slug == rhs.slug + && lhs.name == rhs.name + } +} + diff --git a/Tests/LinuxMain.swift b/Tests/LinuxMain.swift deleted file mode 100644 index 747524c..0000000 --- a/Tests/LinuxMain.swift +++ /dev/null @@ -1,8 +0,0 @@ -import XCTest - -import SyndiKitTests - -var tests = [XCTestCaseEntry]() -tests += SyndiKitTests.__allTests() - -XCTMain(tests) diff --git a/Tests/SyndiKitTests/RSSCodedTests.swift b/Tests/SyndiKitTests/RSSCodedTests.swift index 05089f3..0faafe5 100644 --- a/Tests/SyndiKitTests/RSSCodedTests.swift +++ b/Tests/SyndiKitTests/RSSCodedTests.swift @@ -242,6 +242,69 @@ public final class SyndiKitTests: XCTestCase { XCTAssertNotNil(episode.summary) } + func testEpisodesWithNoPersons() { + guard let feed = try? Content.xmlFeeds["empowerapps-show-cdata_summary"]?.get() else { + XCTFail("Missing Podcast \(name)") + return + } + + guard let rss = feed as? RSSFeed else { + XCTFail("Wrong Type \(name)") + return + } + + let itemTitle = "My Taylor Deep Dish Swift Heroes World Tour" + + guard let item = rss.channel.items.first(where: { $0.title == itemTitle } ) else { + XCTFail("Expected to find episode of title: \(itemTitle)") + return + } + + XCTAssertNil(item.podcastPerson) + } + + func testEpisodesWithHostAndGuestPersons() { + guard let feed = try? Content.xmlFeeds["empowerapps-show-cdata_summary"]?.get() else { + XCTFail("Missing Podcast \(name)") + return + } + + guard let rss = feed as? RSSFeed else { + XCTFail("Wrong Type \(name)") + return + } + + let item1Title = "WWDC Spectacular (Part 2) with Peter Witham" + let item2Title = "How to WWDC with Peter Witham" + + let items = rss.channel.items.filter { $0.title == item1Title || $0.title == item2Title } + + XCTAssertFalse(items.isEmpty) + + for item in items { + let host = item.podcastPerson?.first(where: { $0.role.lowercased() == "host" }) + + XCTAssertNotNil(host) + XCTAssertEqual(host?.name, "Leo Dion") + XCTAssertEqual(host?.href, "https://brightdigit.com") + XCTAssertEqual( + host?.img, + URL(string: "https://images.transistor.fm/file/transistor/images/person/401f05b8-f63f-4b96-803f-c7ac9233b459/1664979700-image.jpg") + ) + + // Both podcasts have the same guest + let guest = item.podcastPerson?.first(where: { $0.role.lowercased() == "guest" }) + + XCTAssertNotNil(guest) + XCTAssertEqual(guest?.name, "CompileSwift") + XCTAssertEqual(guest?.href, "https://compileswift.com") + XCTAssertEqual( + guest?.img, + URL(string: "https://images.transistor.fm/file/transistor/images/person/e36ebf22-69fa-4e4f-a79b-1348c4d39267/1668262451-image.jpg") + ) + } + } + func testEpisodeCDataSummary() { guard let feed = try? Content.xmlFeeds["empowerapps-show-cdata_summary"]?.get() else { XCTFail("Missing Podcast \(name)") diff --git a/Tests/SyndiKitTests/WordPressElementsTests.swift b/Tests/SyndiKitTests/WordPressElementsTests.swift new file mode 100644 index 0000000..f20b64d --- /dev/null +++ b/Tests/SyndiKitTests/WordPressElementsTests.swift @@ -0,0 +1,61 @@ +// +// WordPressElementsTests.swift +// +// +// Created by Ahmed Shendy on 27/08/2023. +// + +import XCTest +@testable import SyndiKit + +final class WordPressElementsTests: XCTestCase { + + func testCategoryEquatable() { + let c1 = WordPressElements.Category( + termID: 1, + niceName: .init(stringLiteral: "uncategorized"), + parent: .init(stringLiteral: ""), + name: "Uncategorized" + ) + + let c2 = WordPressElements.Category( + termID: 2, + niceName: .init(stringLiteral: "podcasting"), + parent: .init(stringLiteral: ""), + name: "Podcasting" + ) + + XCTAssertNotEqual(c1, c2) + } + + func testTagEquatable() { + let t1 = WordPressElements.Tag( + termID: 1, + slug: .init(stringLiteral: "uncategorized"), + name: .init(stringLiteral: "uncategorized") + ) + + let t2 = WordPressElements.Tag( + termID: 2, + slug: .init(stringLiteral: "podcasting"), + name: .init(stringLiteral: "Podcasting") + ) + + XCTAssertNotEqual(t1, t2) + } + + func testPostMetaEquatable() { + let pm1 = WordPressElements.PostMeta( + key: "_edit_last", + value: "1" + ) + + let pm2 = WordPressElements.PostMeta( + key: "_thumbnail_id", + value: "57" + ) + + XCTAssertNotEqual(pm1, pm2) + } + +} diff --git a/Tests/SyndiKitTests/XCTestManifests.swift b/Tests/SyndiKitTests/XCTestManifests.swift deleted file mode 100644 index 33ea494..0000000 --- a/Tests/SyndiKitTests/XCTestManifests.swift +++ /dev/null @@ -1,74 +0,0 @@ -#if !canImport(ObjectiveC) - import XCTest - - extension BlogTests { - // DO NOT MODIFY: This is autogenerated, use: - // `swift test --generate-linuxmain` - // to regenerate. - static let __allTests__BlogTests = [ - ("testBlogs", testBlogs) - ] - } - - extension DecodingErrorTests { - // DO NOT MODIFY: This is autogenerated, use: - // `swift test --generate-linuxmain` - // to regenerate. - static let __allTests__DecodingErrorTests = [ - ("testErrorsEmpty", testErrorsEmpty), - ("testErrorsMany", testErrorsMany), - ("testErrorsOne", testErrorsOne) - ] - } - - extension RSSGUIDTests { - // DO NOT MODIFY: This is autogenerated, use: - // `swift test --generate-linuxmain` - // to regenerate. - static let __allTests__RSSGUIDTests = [ - ("testGUIDURL", testGUIDURL), - ("testGUIDUUID", testGUIDUUID), - ("testGUIDYouTube", testGUIDYouTube) - ] - } - - extension SyndiKitTests { - // DO NOT MODIFY: This is autogenerated, use: - // `swift test --generate-linuxmain` - // to regenerate. - static let __allTests__SyndiKitTests = [ - ("testCategories", testCategories), - ("testDurations", testDurations), - ("testEntryable", testEntryable), - ("testJSONXMLEquality", testJSONXMLEquality), - ("testPodcastEpisodes", testPodcastEpisodes), - ("testSyndication", testSyndication), - ("testYoutubeVideos", testYoutubeVideos) - ] - } - - extension WordpressTests { - // DO NOT MODIFY: This is autogenerated, use: - // `swift test --generate-linuxmain` - // to regenerate. - static let __allTests__WordpressTests = [ - ("testDateDecoder", testDateDecoder), - ("testInitAllFields", testInitAllFields), - ("testInitAllFieldsMeta", testInitAllFieldsMeta), - ("testInitAllFieldsWMeta", testInitAllFieldsWMeta), - ("testInitMissingName", testInitMissingName), - ("testWordpressPosts", testWordpressPosts), - ("testWpAttachmentURL", testWpAttachmentURL) - ] - } - - public func __allTests() -> [XCTestCaseEntry] { - return [ - testCase(BlogTests.__allTests__BlogTests), - testCase(DecodingErrorTests.__allTests__DecodingErrorTests), - testCase(RSSGUIDTests.__allTests__RSSGUIDTests), - testCase(SyndiKitTests.__allTests__SyndiKitTests), - testCase(WordpressTests.__allTests__WordpressTests) - ] - } -#endif