From 61825a6d8899b13e9b7a4a400064cac5d70a243e Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Tue, 27 Aug 2024 20:46:11 -0700 Subject: [PATCH] Create FeedParser target to replace Parser. --- ...ests.xcscheme => FeedParserTests.xcscheme} | 6 +- .../xcschemes/Parser-Package.xcscheme | 10 +++ .../xcshareddata/xcschemes/Parser.xcscheme | 79 ------------------- Modules/Parser/Package.swift | 10 +-- .../Feeds/FeedParser.swift | 0 .../Feeds/FeedParserError.swift | 0 .../Feeds/FeedType.swift | 0 .../Feeds/JSON/JSONFeedParser.swift | 0 .../Feeds/JSON/RSSInJSONParser.swift | 0 .../Feeds/ParsedAttachment.swift | 0 .../Feeds/ParsedAuthor.swift | 0 .../Feeds/ParsedFeed.swift | 2 +- .../Feeds/ParsedHub.swift | 0 .../Feeds/ParsedItem.swift | 0 .../Feeds/XML/AtomParser.swift | 0 .../Feeds/XML/RSParsedFeedTransformer.swift | 0 .../FeedParser/Feeds/XML/RSSParser.swift | 22 ++++++ .../JSON/JSONTypes.swift | 0 .../JSON/JSONUtilities.swift | 0 .../Sources/Parser/Feeds/XML/RSSParser.swift | 28 ------- .../AtomParserTests.swift | 0 .../EntityDecodingTests.swift | 0 .../FeedParserTypeTests.swift | 0 .../HTMLLinkTests.swift | 0 .../HTMLMetadataTests.swift | 0 .../Info.plist | 0 .../JSONFeedParserTests.swift | 0 .../ParserTests.swift | 0 .../RSDateParserTests.swift | 0 .../RSSInJSONParserTests.swift | 0 .../RSSParserTests.swift | 0 .../Resources/3960.json | 0 .../Resources/489.rss | 0 .../Resources/4fsodonline.atom | 0 .../Resources/DaringFireball.atom | 0 .../Resources/DaringFireball.html | 0 .../Resources/DaringFireball.json | 0 .../Resources/DaringFireball.rss | 0 .../Resources/EMarley.rss | 0 .../Resources/KatieFloyd.rss | 0 .../Resources/OneFootTsunami.atom | 0 .../Resources/ScriptingNews.json | 0 .../Resources/YouTubeTheVolvoRocks.html | 0 .../Resources/aktuality.rss | 0 .../Resources/allthis-partial.json | 0 .../Resources/allthis.atom | 0 .../Resources/allthis.json | 0 .../Resources/atp.rss | 0 .../Resources/authors.json | 0 .../Resources/bio.rdf | 0 .../Resources/cloudblog.rss | 0 .../Resources/coco.html | 0 .../Resources/curt.json | 0 .../Resources/dcrainmaker.xml | 0 .../Resources/donthitsave.xml | 0 .../Resources/expertopinionent.atom | 0 .../Resources/furbo.html | 0 .../Resources/inessential.html | 0 .../Resources/inessential.json | 0 .../Resources/kc0011.rss | 0 .../Resources/livemint.xml | 0 .../Resources/macworld.rss | 0 .../Resources/manton.rss | 0 .../Resources/monkeydom.rss | 0 .../Resources/natasha.xml | 0 .../Resources/phpxml.rss | 0 .../Resources/pxlnv.json | 0 .../Resources/rose.json | 0 .../Resources/russcox.atom | 0 .../Resources/scriptingNews.rss | 0 .../Resources/sixcolors.html | 0 .../Resources/theomnishow.rss | 0 72 files changed, 41 insertions(+), 116 deletions(-) rename Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/{ParserTests.xcscheme => FeedParserTests.xcscheme} (91%) delete mode 100644 Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/Parser.xcscheme rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/FeedParser.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/FeedParserError.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/FeedType.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/JSON/JSONFeedParser.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/JSON/RSSInJSONParser.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/ParsedAttachment.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/ParsedAuthor.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/ParsedFeed.swift (97%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/ParsedHub.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/ParsedItem.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/XML/AtomParser.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/Feeds/XML/RSParsedFeedTransformer.swift (100%) create mode 100644 Modules/Parser/Sources/FeedParser/Feeds/XML/RSSParser.swift rename Modules/Parser/Sources/{Parser => FeedParser}/JSON/JSONTypes.swift (100%) rename Modules/Parser/Sources/{Parser => FeedParser}/JSON/JSONUtilities.swift (100%) delete mode 100644 Modules/Parser/Sources/Parser/Feeds/XML/RSSParser.swift rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/AtomParserTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/EntityDecodingTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/FeedParserTypeTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/HTMLLinkTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/HTMLMetadataTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Info.plist (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/JSONFeedParserTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/ParserTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/RSDateParserTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/RSSInJSONParserTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/RSSParserTests.swift (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/3960.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/489.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/4fsodonline.atom (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/DaringFireball.atom (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/DaringFireball.html (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/DaringFireball.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/DaringFireball.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/EMarley.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/KatieFloyd.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/OneFootTsunami.atom (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/ScriptingNews.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/YouTubeTheVolvoRocks.html (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/aktuality.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/allthis-partial.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/allthis.atom (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/allthis.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/atp.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/authors.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/bio.rdf (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/cloudblog.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/coco.html (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/curt.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/dcrainmaker.xml (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/donthitsave.xml (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/expertopinionent.atom (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/furbo.html (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/inessential.html (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/inessential.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/kc0011.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/livemint.xml (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/macworld.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/manton.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/monkeydom.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/natasha.xml (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/phpxml.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/pxlnv.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/rose.json (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/russcox.atom (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/scriptingNews.rss (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/sixcolors.html (100%) rename Modules/Parser/Tests/{ParserTests => FeedParserTests}/Resources/theomnishow.rss (100%) diff --git a/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/ParserTests.xcscheme b/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/FeedParserTests.xcscheme similarity index 91% rename from Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/ParserTests.xcscheme rename to Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/FeedParserTests.xcscheme index f202d73f0..7f09db509 100644 --- a/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/ParserTests.xcscheme +++ b/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/FeedParserTests.xcscheme @@ -18,9 +18,9 @@ skipped = "NO"> diff --git a/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/Parser-Package.xcscheme b/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/Parser-Package.xcscheme index 1dcb9ee6e..e1ee0e250 100644 --- a/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/Parser-Package.xcscheme +++ b/Modules/Parser/.swiftpm/xcode/xcshareddata/xcschemes/Parser-Package.xcscheme @@ -78,6 +78,16 @@ ReferencedContainer = "container:"> + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Modules/Parser/Package.swift b/Modules/Parser/Package.swift index 745b19884..1f9b0ee07 100644 --- a/Modules/Parser/Package.swift +++ b/Modules/Parser/Package.swift @@ -9,9 +9,9 @@ let package = Package( products: [ // Products define the executables and libraries a package produces, and make them visible to other packages. .library( - name: "Parser", + name: "FeedParser", type: .dynamic, - targets: ["Parser"]), + targets: ["FeedParser"]), .library( name: "SAX", type: .dynamic, @@ -36,7 +36,7 @@ let package = Package( .enableExperimentalFeature("StrictConcurrency") ]), .target( - name: "Parser", + name: "FeedParser", dependencies: [ "SAX" ], @@ -50,8 +50,8 @@ let package = Package( .enableExperimentalFeature("StrictConcurrency") ]), .testTarget( - name: "ParserTests", - dependencies: ["Parser"], + name: "FeedParserTests", + dependencies: ["FeedParser"], exclude: ["Info.plist"], resources: [.copy("Resources")]), .testTarget( diff --git a/Modules/Parser/Sources/Parser/Feeds/FeedParser.swift b/Modules/Parser/Sources/FeedParser/Feeds/FeedParser.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/FeedParser.swift rename to Modules/Parser/Sources/FeedParser/Feeds/FeedParser.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/FeedParserError.swift b/Modules/Parser/Sources/FeedParser/Feeds/FeedParserError.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/FeedParserError.swift rename to Modules/Parser/Sources/FeedParser/Feeds/FeedParserError.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/FeedType.swift b/Modules/Parser/Sources/FeedParser/Feeds/FeedType.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/FeedType.swift rename to Modules/Parser/Sources/FeedParser/Feeds/FeedType.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/JSON/JSONFeedParser.swift b/Modules/Parser/Sources/FeedParser/Feeds/JSON/JSONFeedParser.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/JSON/JSONFeedParser.swift rename to Modules/Parser/Sources/FeedParser/Feeds/JSON/JSONFeedParser.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/JSON/RSSInJSONParser.swift b/Modules/Parser/Sources/FeedParser/Feeds/JSON/RSSInJSONParser.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/JSON/RSSInJSONParser.swift rename to Modules/Parser/Sources/FeedParser/Feeds/JSON/RSSInJSONParser.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/ParsedAttachment.swift b/Modules/Parser/Sources/FeedParser/Feeds/ParsedAttachment.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/ParsedAttachment.swift rename to Modules/Parser/Sources/FeedParser/Feeds/ParsedAttachment.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/ParsedAuthor.swift b/Modules/Parser/Sources/FeedParser/Feeds/ParsedAuthor.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/ParsedAuthor.swift rename to Modules/Parser/Sources/FeedParser/Feeds/ParsedAuthor.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/ParsedFeed.swift b/Modules/Parser/Sources/FeedParser/Feeds/ParsedFeed.swift similarity index 97% rename from Modules/Parser/Sources/Parser/Feeds/ParsedFeed.swift rename to Modules/Parser/Sources/FeedParser/Feeds/ParsedFeed.swift index 639d86ab4..6aef1b5c5 100644 --- a/Modules/Parser/Sources/Parser/Feeds/ParsedFeed.swift +++ b/Modules/Parser/Sources/FeedParser/Feeds/ParsedFeed.swift @@ -8,7 +8,7 @@ import Foundation -public struct ParsedFeed: Sendable { +public class ParsedFeed: Sendable { public let type: FeedType public let title: String? diff --git a/Modules/Parser/Sources/Parser/Feeds/ParsedHub.swift b/Modules/Parser/Sources/FeedParser/Feeds/ParsedHub.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/ParsedHub.swift rename to Modules/Parser/Sources/FeedParser/Feeds/ParsedHub.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/ParsedItem.swift b/Modules/Parser/Sources/FeedParser/Feeds/ParsedItem.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/ParsedItem.swift rename to Modules/Parser/Sources/FeedParser/Feeds/ParsedItem.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/XML/AtomParser.swift b/Modules/Parser/Sources/FeedParser/Feeds/XML/AtomParser.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/XML/AtomParser.swift rename to Modules/Parser/Sources/FeedParser/Feeds/XML/AtomParser.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/XML/RSParsedFeedTransformer.swift b/Modules/Parser/Sources/FeedParser/Feeds/XML/RSParsedFeedTransformer.swift similarity index 100% rename from Modules/Parser/Sources/Parser/Feeds/XML/RSParsedFeedTransformer.swift rename to Modules/Parser/Sources/FeedParser/Feeds/XML/RSParsedFeedTransformer.swift diff --git a/Modules/Parser/Sources/FeedParser/Feeds/XML/RSSParser.swift b/Modules/Parser/Sources/FeedParser/Feeds/XML/RSSParser.swift new file mode 100644 index 000000000..6a643d516 --- /dev/null +++ b/Modules/Parser/Sources/FeedParser/Feeds/XML/RSSParser.swift @@ -0,0 +1,22 @@ +// +// RSSParser.swift +// RSParser +// +// Created by Brent Simmons on 6/25/17. +// Copyright © 2017 Ranchero Software, LLC. All rights reserved. +// + +import Foundation +import SAX + +public final class RSSParser { + + private var parseFeed: ParsedFeed? + + public static func parsedFeed(with parserData: ParserData) -> ParsedFeed? { + + let parser = RSSParser(parserData) + parser.parse() + return parser.parsedFeed + } +} diff --git a/Modules/Parser/Sources/Parser/JSON/JSONTypes.swift b/Modules/Parser/Sources/FeedParser/JSON/JSONTypes.swift similarity index 100% rename from Modules/Parser/Sources/Parser/JSON/JSONTypes.swift rename to Modules/Parser/Sources/FeedParser/JSON/JSONTypes.swift diff --git a/Modules/Parser/Sources/Parser/JSON/JSONUtilities.swift b/Modules/Parser/Sources/FeedParser/JSON/JSONUtilities.swift similarity index 100% rename from Modules/Parser/Sources/Parser/JSON/JSONUtilities.swift rename to Modules/Parser/Sources/FeedParser/JSON/JSONUtilities.swift diff --git a/Modules/Parser/Sources/Parser/Feeds/XML/RSSParser.swift b/Modules/Parser/Sources/Parser/Feeds/XML/RSSParser.swift deleted file mode 100644 index 885790e16..000000000 --- a/Modules/Parser/Sources/Parser/Feeds/XML/RSSParser.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// RSSParser.swift -// RSParser -// -// Created by Brent Simmons on 6/25/17. -// Copyright © 2017 Ranchero Software, LLC. All rights reserved. -// - -import Foundation - -// RSSParser wraps the Objective-C RSRSSParser. -// -// The Objective-C parser creates RSParsedFeed, RSParsedArticle, etc. -// This wrapper then creates ParsedFeed, ParsedItem, etc. so that it creates -// the same things that JSONFeedParser and RSSInJSONParser create. -// -// In general, you should see FeedParser.swift for all your feed-parsing needs. - -public struct RSSParser { - - public static func parse(_ parserData: ParserData) -> ParsedFeed? { - - if let rsParsedFeed = RSRSSParser.parseFeed(with: parserData) { - return RSParsedFeedTransformer.parsedFeed(rsParsedFeed) - } - return nil - } -} diff --git a/Modules/Parser/Tests/ParserTests/AtomParserTests.swift b/Modules/Parser/Tests/FeedParserTests/AtomParserTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/AtomParserTests.swift rename to Modules/Parser/Tests/FeedParserTests/AtomParserTests.swift diff --git a/Modules/Parser/Tests/ParserTests/EntityDecodingTests.swift b/Modules/Parser/Tests/FeedParserTests/EntityDecodingTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/EntityDecodingTests.swift rename to Modules/Parser/Tests/FeedParserTests/EntityDecodingTests.swift diff --git a/Modules/Parser/Tests/ParserTests/FeedParserTypeTests.swift b/Modules/Parser/Tests/FeedParserTests/FeedParserTypeTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/FeedParserTypeTests.swift rename to Modules/Parser/Tests/FeedParserTests/FeedParserTypeTests.swift diff --git a/Modules/Parser/Tests/ParserTests/HTMLLinkTests.swift b/Modules/Parser/Tests/FeedParserTests/HTMLLinkTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/HTMLLinkTests.swift rename to Modules/Parser/Tests/FeedParserTests/HTMLLinkTests.swift diff --git a/Modules/Parser/Tests/ParserTests/HTMLMetadataTests.swift b/Modules/Parser/Tests/FeedParserTests/HTMLMetadataTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/HTMLMetadataTests.swift rename to Modules/Parser/Tests/FeedParserTests/HTMLMetadataTests.swift diff --git a/Modules/Parser/Tests/ParserTests/Info.plist b/Modules/Parser/Tests/FeedParserTests/Info.plist similarity index 100% rename from Modules/Parser/Tests/ParserTests/Info.plist rename to Modules/Parser/Tests/FeedParserTests/Info.plist diff --git a/Modules/Parser/Tests/ParserTests/JSONFeedParserTests.swift b/Modules/Parser/Tests/FeedParserTests/JSONFeedParserTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/JSONFeedParserTests.swift rename to Modules/Parser/Tests/FeedParserTests/JSONFeedParserTests.swift diff --git a/Modules/Parser/Tests/ParserTests/ParserTests.swift b/Modules/Parser/Tests/FeedParserTests/ParserTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/ParserTests.swift rename to Modules/Parser/Tests/FeedParserTests/ParserTests.swift diff --git a/Modules/Parser/Tests/ParserTests/RSDateParserTests.swift b/Modules/Parser/Tests/FeedParserTests/RSDateParserTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/RSDateParserTests.swift rename to Modules/Parser/Tests/FeedParserTests/RSDateParserTests.swift diff --git a/Modules/Parser/Tests/ParserTests/RSSInJSONParserTests.swift b/Modules/Parser/Tests/FeedParserTests/RSSInJSONParserTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/RSSInJSONParserTests.swift rename to Modules/Parser/Tests/FeedParserTests/RSSInJSONParserTests.swift diff --git a/Modules/Parser/Tests/ParserTests/RSSParserTests.swift b/Modules/Parser/Tests/FeedParserTests/RSSParserTests.swift similarity index 100% rename from Modules/Parser/Tests/ParserTests/RSSParserTests.swift rename to Modules/Parser/Tests/FeedParserTests/RSSParserTests.swift diff --git a/Modules/Parser/Tests/ParserTests/Resources/3960.json b/Modules/Parser/Tests/FeedParserTests/Resources/3960.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/3960.json rename to Modules/Parser/Tests/FeedParserTests/Resources/3960.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/489.rss b/Modules/Parser/Tests/FeedParserTests/Resources/489.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/489.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/489.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/4fsodonline.atom b/Modules/Parser/Tests/FeedParserTests/Resources/4fsodonline.atom similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/4fsodonline.atom rename to Modules/Parser/Tests/FeedParserTests/Resources/4fsodonline.atom diff --git a/Modules/Parser/Tests/ParserTests/Resources/DaringFireball.atom b/Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.atom similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/DaringFireball.atom rename to Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.atom diff --git a/Modules/Parser/Tests/ParserTests/Resources/DaringFireball.html b/Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.html similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/DaringFireball.html rename to Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.html diff --git a/Modules/Parser/Tests/ParserTests/Resources/DaringFireball.json b/Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/DaringFireball.json rename to Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/DaringFireball.rss b/Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/DaringFireball.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/DaringFireball.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/EMarley.rss b/Modules/Parser/Tests/FeedParserTests/Resources/EMarley.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/EMarley.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/EMarley.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/KatieFloyd.rss b/Modules/Parser/Tests/FeedParserTests/Resources/KatieFloyd.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/KatieFloyd.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/KatieFloyd.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/OneFootTsunami.atom b/Modules/Parser/Tests/FeedParserTests/Resources/OneFootTsunami.atom similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/OneFootTsunami.atom rename to Modules/Parser/Tests/FeedParserTests/Resources/OneFootTsunami.atom diff --git a/Modules/Parser/Tests/ParserTests/Resources/ScriptingNews.json b/Modules/Parser/Tests/FeedParserTests/Resources/ScriptingNews.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/ScriptingNews.json rename to Modules/Parser/Tests/FeedParserTests/Resources/ScriptingNews.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/YouTubeTheVolvoRocks.html b/Modules/Parser/Tests/FeedParserTests/Resources/YouTubeTheVolvoRocks.html similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/YouTubeTheVolvoRocks.html rename to Modules/Parser/Tests/FeedParserTests/Resources/YouTubeTheVolvoRocks.html diff --git a/Modules/Parser/Tests/ParserTests/Resources/aktuality.rss b/Modules/Parser/Tests/FeedParserTests/Resources/aktuality.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/aktuality.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/aktuality.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/allthis-partial.json b/Modules/Parser/Tests/FeedParserTests/Resources/allthis-partial.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/allthis-partial.json rename to Modules/Parser/Tests/FeedParserTests/Resources/allthis-partial.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/allthis.atom b/Modules/Parser/Tests/FeedParserTests/Resources/allthis.atom similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/allthis.atom rename to Modules/Parser/Tests/FeedParserTests/Resources/allthis.atom diff --git a/Modules/Parser/Tests/ParserTests/Resources/allthis.json b/Modules/Parser/Tests/FeedParserTests/Resources/allthis.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/allthis.json rename to Modules/Parser/Tests/FeedParserTests/Resources/allthis.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/atp.rss b/Modules/Parser/Tests/FeedParserTests/Resources/atp.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/atp.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/atp.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/authors.json b/Modules/Parser/Tests/FeedParserTests/Resources/authors.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/authors.json rename to Modules/Parser/Tests/FeedParserTests/Resources/authors.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/bio.rdf b/Modules/Parser/Tests/FeedParserTests/Resources/bio.rdf similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/bio.rdf rename to Modules/Parser/Tests/FeedParserTests/Resources/bio.rdf diff --git a/Modules/Parser/Tests/ParserTests/Resources/cloudblog.rss b/Modules/Parser/Tests/FeedParserTests/Resources/cloudblog.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/cloudblog.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/cloudblog.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/coco.html b/Modules/Parser/Tests/FeedParserTests/Resources/coco.html similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/coco.html rename to Modules/Parser/Tests/FeedParserTests/Resources/coco.html diff --git a/Modules/Parser/Tests/ParserTests/Resources/curt.json b/Modules/Parser/Tests/FeedParserTests/Resources/curt.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/curt.json rename to Modules/Parser/Tests/FeedParserTests/Resources/curt.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/dcrainmaker.xml b/Modules/Parser/Tests/FeedParserTests/Resources/dcrainmaker.xml similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/dcrainmaker.xml rename to Modules/Parser/Tests/FeedParserTests/Resources/dcrainmaker.xml diff --git a/Modules/Parser/Tests/ParserTests/Resources/donthitsave.xml b/Modules/Parser/Tests/FeedParserTests/Resources/donthitsave.xml similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/donthitsave.xml rename to Modules/Parser/Tests/FeedParserTests/Resources/donthitsave.xml diff --git a/Modules/Parser/Tests/ParserTests/Resources/expertopinionent.atom b/Modules/Parser/Tests/FeedParserTests/Resources/expertopinionent.atom similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/expertopinionent.atom rename to Modules/Parser/Tests/FeedParserTests/Resources/expertopinionent.atom diff --git a/Modules/Parser/Tests/ParserTests/Resources/furbo.html b/Modules/Parser/Tests/FeedParserTests/Resources/furbo.html similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/furbo.html rename to Modules/Parser/Tests/FeedParserTests/Resources/furbo.html diff --git a/Modules/Parser/Tests/ParserTests/Resources/inessential.html b/Modules/Parser/Tests/FeedParserTests/Resources/inessential.html similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/inessential.html rename to Modules/Parser/Tests/FeedParserTests/Resources/inessential.html diff --git a/Modules/Parser/Tests/ParserTests/Resources/inessential.json b/Modules/Parser/Tests/FeedParserTests/Resources/inessential.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/inessential.json rename to Modules/Parser/Tests/FeedParserTests/Resources/inessential.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/kc0011.rss b/Modules/Parser/Tests/FeedParserTests/Resources/kc0011.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/kc0011.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/kc0011.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/livemint.xml b/Modules/Parser/Tests/FeedParserTests/Resources/livemint.xml similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/livemint.xml rename to Modules/Parser/Tests/FeedParserTests/Resources/livemint.xml diff --git a/Modules/Parser/Tests/ParserTests/Resources/macworld.rss b/Modules/Parser/Tests/FeedParserTests/Resources/macworld.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/macworld.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/macworld.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/manton.rss b/Modules/Parser/Tests/FeedParserTests/Resources/manton.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/manton.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/manton.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/monkeydom.rss b/Modules/Parser/Tests/FeedParserTests/Resources/monkeydom.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/monkeydom.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/monkeydom.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/natasha.xml b/Modules/Parser/Tests/FeedParserTests/Resources/natasha.xml similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/natasha.xml rename to Modules/Parser/Tests/FeedParserTests/Resources/natasha.xml diff --git a/Modules/Parser/Tests/ParserTests/Resources/phpxml.rss b/Modules/Parser/Tests/FeedParserTests/Resources/phpxml.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/phpxml.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/phpxml.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/pxlnv.json b/Modules/Parser/Tests/FeedParserTests/Resources/pxlnv.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/pxlnv.json rename to Modules/Parser/Tests/FeedParserTests/Resources/pxlnv.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/rose.json b/Modules/Parser/Tests/FeedParserTests/Resources/rose.json similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/rose.json rename to Modules/Parser/Tests/FeedParserTests/Resources/rose.json diff --git a/Modules/Parser/Tests/ParserTests/Resources/russcox.atom b/Modules/Parser/Tests/FeedParserTests/Resources/russcox.atom similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/russcox.atom rename to Modules/Parser/Tests/FeedParserTests/Resources/russcox.atom diff --git a/Modules/Parser/Tests/ParserTests/Resources/scriptingNews.rss b/Modules/Parser/Tests/FeedParserTests/Resources/scriptingNews.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/scriptingNews.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/scriptingNews.rss diff --git a/Modules/Parser/Tests/ParserTests/Resources/sixcolors.html b/Modules/Parser/Tests/FeedParserTests/Resources/sixcolors.html similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/sixcolors.html rename to Modules/Parser/Tests/FeedParserTests/Resources/sixcolors.html diff --git a/Modules/Parser/Tests/ParserTests/Resources/theomnishow.rss b/Modules/Parser/Tests/FeedParserTests/Resources/theomnishow.rss similarity index 100% rename from Modules/Parser/Tests/ParserTests/Resources/theomnishow.rss rename to Modules/Parser/Tests/FeedParserTests/Resources/theomnishow.rss