Create FeedParser target to replace Parser.
This commit is contained in:
parent
ec2c294fab
commit
61825a6d88
@ -18,9 +18,9 @@
|
|||||||
skipped = "NO">
|
skipped = "NO">
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "ParserTests"
|
BlueprintIdentifier = "FeedParserTests"
|
||||||
BuildableName = "ParserTests"
|
BuildableName = "FeedParserTests"
|
||||||
BlueprintName = "ParserTests"
|
BlueprintName = "FeedParserTests"
|
||||||
ReferencedContainer = "container:">
|
ReferencedContainer = "container:">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</TestableReference>
|
</TestableReference>
|
@ -78,6 +78,16 @@
|
|||||||
ReferencedContainer = "container:">
|
ReferencedContainer = "container:">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</TestableReference>
|
</TestableReference>
|
||||||
|
<TestableReference
|
||||||
|
skipped = "NO">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "FeedParserTests"
|
||||||
|
BuildableName = "FeedParserTests"
|
||||||
|
BlueprintName = "FeedParserTests"
|
||||||
|
ReferencedContainer = "container:">
|
||||||
|
</BuildableReference>
|
||||||
|
</TestableReference>
|
||||||
</Testables>
|
</Testables>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Scheme
|
|
||||||
LastUpgradeVersion = "1530"
|
|
||||||
version = "1.7">
|
|
||||||
<BuildAction
|
|
||||||
parallelizeBuildables = "YES"
|
|
||||||
buildImplicitDependencies = "YES"
|
|
||||||
buildArchitectures = "Automatic">
|
|
||||||
<BuildActionEntries>
|
|
||||||
<BuildActionEntry
|
|
||||||
buildForTesting = "YES"
|
|
||||||
buildForRunning = "YES"
|
|
||||||
buildForProfiling = "YES"
|
|
||||||
buildForArchiving = "YES"
|
|
||||||
buildForAnalyzing = "YES">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "Parser"
|
|
||||||
BuildableName = "Parser"
|
|
||||||
BlueprintName = "Parser"
|
|
||||||
ReferencedContainer = "container:">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildActionEntry>
|
|
||||||
</BuildActionEntries>
|
|
||||||
</BuildAction>
|
|
||||||
<TestAction
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
shouldAutocreateTestPlan = "YES">
|
|
||||||
<Testables>
|
|
||||||
<TestableReference
|
|
||||||
skipped = "NO">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "ParserTests"
|
|
||||||
BuildableName = "ParserTests"
|
|
||||||
BlueprintName = "ParserTests"
|
|
||||||
ReferencedContainer = "container:">
|
|
||||||
</BuildableReference>
|
|
||||||
</TestableReference>
|
|
||||||
</Testables>
|
|
||||||
</TestAction>
|
|
||||||
<LaunchAction
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
||||||
launchStyle = "0"
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
|
||||||
debugDocumentVersioning = "YES"
|
|
||||||
debugServiceExtension = "internal"
|
|
||||||
allowLocationSimulation = "YES">
|
|
||||||
</LaunchAction>
|
|
||||||
<ProfileAction
|
|
||||||
buildConfiguration = "Release"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
savedToolIdentifier = ""
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
debugDocumentVersioning = "YES">
|
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "Parser"
|
|
||||||
BuildableName = "Parser"
|
|
||||||
BlueprintName = "Parser"
|
|
||||||
ReferencedContainer = "container:">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</ProfileAction>
|
|
||||||
<AnalyzeAction
|
|
||||||
buildConfiguration = "Debug">
|
|
||||||
</AnalyzeAction>
|
|
||||||
<ArchiveAction
|
|
||||||
buildConfiguration = "Release"
|
|
||||||
revealArchiveInOrganizer = "YES">
|
|
||||||
</ArchiveAction>
|
|
||||||
</Scheme>
|
|
@ -9,9 +9,9 @@ let package = Package(
|
|||||||
products: [
|
products: [
|
||||||
// Products define the executables and libraries a package produces, and make them visible to other packages.
|
// Products define the executables and libraries a package produces, and make them visible to other packages.
|
||||||
.library(
|
.library(
|
||||||
name: "Parser",
|
name: "FeedParser",
|
||||||
type: .dynamic,
|
type: .dynamic,
|
||||||
targets: ["Parser"]),
|
targets: ["FeedParser"]),
|
||||||
.library(
|
.library(
|
||||||
name: "SAX",
|
name: "SAX",
|
||||||
type: .dynamic,
|
type: .dynamic,
|
||||||
@ -36,7 +36,7 @@ let package = Package(
|
|||||||
.enableExperimentalFeature("StrictConcurrency")
|
.enableExperimentalFeature("StrictConcurrency")
|
||||||
]),
|
]),
|
||||||
.target(
|
.target(
|
||||||
name: "Parser",
|
name: "FeedParser",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
"SAX"
|
"SAX"
|
||||||
],
|
],
|
||||||
@ -50,8 +50,8 @@ let package = Package(
|
|||||||
.enableExperimentalFeature("StrictConcurrency")
|
.enableExperimentalFeature("StrictConcurrency")
|
||||||
]),
|
]),
|
||||||
.testTarget(
|
.testTarget(
|
||||||
name: "ParserTests",
|
name: "FeedParserTests",
|
||||||
dependencies: ["Parser"],
|
dependencies: ["FeedParser"],
|
||||||
exclude: ["Info.plist"],
|
exclude: ["Info.plist"],
|
||||||
resources: [.copy("Resources")]),
|
resources: [.copy("Resources")]),
|
||||||
.testTarget(
|
.testTarget(
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct ParsedFeed: Sendable {
|
public class ParsedFeed: Sendable {
|
||||||
|
|
||||||
public let type: FeedType
|
public let type: FeedType
|
||||||
public let title: String?
|
public let title: String?
|
22
Modules/Parser/Sources/FeedParser/Feeds/XML/RSSParser.swift
Normal file
22
Modules/Parser/Sources/FeedParser/Feeds/XML/RSSParser.swift
Normal file
@ -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
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user