From 743de0e0655f52681a81d6014493d7d97f248f45 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Mon, 20 Jan 2025 22:33:18 -0800 Subject: [PATCH] =?UTF-8?q?Rename=20XMLString=20struct=20=E2=80=94=C2=A0us?= =?UTF-8?q?e=20two=20separate=20structs:=20AttributeKey=20and=20AttributeV?= =?UTF-8?q?alue,=20to=20make=20it=20more=20clear=20what=20these=20are.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FeedParser/Feeds/XML/AtomParser.swift | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift b/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift index 4f35b84fa..93e4bef77 100644 --- a/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift +++ b/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift @@ -81,20 +81,23 @@ private extension AtomParser { static let modified = "modified".utf8CString } - private struct XMLString { + private struct AttributeKey { static let rel = "rel" - static let alternate = "alternate" - static let related = "related" - static let enclosure = "enclosure" static let href = "href" static let title = "title" static let type = "type" - static let text = "text" static let length = "length" static let xmlLang = "xml:lang" static let xmlBase = "xml:base" } + private struct AttributeValue { + static let text = "text" + static let alternate = "alternate" + static let related = "related" + static let enclosure = "enclosure" + } + func currentString(_ saxParser: SAXParser) -> String? { saxParser.currentStringWithTrimmedWhitespace @@ -126,12 +129,12 @@ private extension AtomParser { guard feed.link == nil, let currentAttributes else { return } - guard let link = currentAttributes[XMLString.href] else { + guard let link = currentAttributes[AttributeKey.href] else { return } let isRelated: Bool = { - if let related = currentAttributes[XMLString.rel], related == XMLString.alternate { // rel="alternate" + if let related = currentAttributes[AttributeKey.rel], related == AttributeValue.alternate { // rel="alternate" return true } return currentAttributes.count == 1 // Example: — no rel or anything @@ -149,11 +152,11 @@ private extension AtomParser { } if feed.language == nil { - feed.language = currentAttributes[XMLString.xmlLang] + feed.language = currentAttributes[AttributeKey.xmlLang] } if xmlBaseURL == nil { - if let xmlBase = currentAttributes[XMLString.xmlBase] { + if let xmlBase = currentAttributes[AttributeKey.xmlBase] { if let baseURL = URL(string: xmlBase) { xmlBaseURL = baseURL } @@ -221,7 +224,7 @@ private extension AtomParser { var content = currentString(saxParser) - if currentAttributes?[XMLString.type] == XMLString.text { + if currentAttributes?[AttributeKey.type] == AttributeValue.text { content = content?.replacingOccurrences(of: "\n", with: "\n
") } @@ -241,27 +244,27 @@ private extension AtomParser { guard let attributes = currentAttributes else { return } - guard let urlString = attributes[XMLString.href], !urlString.isEmpty else { + guard let urlString = attributes[AttributeKey.href], !urlString.isEmpty else { return } let resolvedURLString = linkResolvedAgainstXMLBase(urlString) - var rel = attributes[XMLString.rel] + var rel = attributes[AttributeKey.rel] if rel?.isEmpty ?? true { - rel = XMLString.alternate + rel = AttributeValue.alternate } - if rel == XMLString.related { + if rel == AttributeValue.related { if article.link == nil { article.link = resolvedURLString } } - else if rel == XMLString.alternate { + else if rel == AttributeValue.alternate { if article.permalink == nil { article.permalink = resolvedURLString } } - else if rel == XMLString.enclosure { + else if rel == AttributeValue.enclosure { if let enclosure = enclosure(resolvedURLString, attributes) { article.addEnclosure(enclosure) } @@ -283,10 +286,10 @@ private extension AtomParser { func enclosure(_ urlString: String, _ attributes: StringDictionary) -> RSSEnclosure? { let enclosure = RSSEnclosure(url: urlString) - enclosure.title = attributes[XMLString.title] - enclosure.mimeType = attributes[XMLString.type] + enclosure.title = attributes[AttributeKey.title] + enclosure.mimeType = attributes[AttributeKey.type] - if let lengthString = attributes[XMLString.length] { + if let lengthString = attributes[AttributeKey.length] { enclosure.length = Int(lengthString) }