mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
63 lines
2.0 KiB
Swift
63 lines
2.0 KiB
Swift
//
|
||
// ArticleRenderingSpecialCases.swift
|
||
// NetNewsWire
|
||
//
|
||
// Created by Brent Simmons on 4/25/25.
|
||
// Copyright © 2025 Ranchero Software. All rights reserved.
|
||
//
|
||
|
||
import Foundation
|
||
|
||
struct ArticleRenderingSpecialCases {
|
||
|
||
static func filterHTMLIfNeeded(baseURL: String, html: String) -> String {
|
||
guard let url = URL(string: baseURL) else {
|
||
return html
|
||
}
|
||
|
||
if isVergeSpecialCase(url) {
|
||
return filterVergeHTML(html)
|
||
}
|
||
|
||
return html
|
||
}
|
||
|
||
static func isVergeSpecialCase(_ baseURL: URL) -> Bool {
|
||
guard let host = baseURL.host() else {
|
||
return false
|
||
}
|
||
|
||
return host.lowercased().contains("theverge.com")
|
||
}
|
||
|
||
static func filterVergeHTML(_ html: String) -> String {
|
||
var filteredHTML = html
|
||
|
||
// Right curly single quote
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "’", with: "’")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "’", with: "’")
|
||
|
||
// Left curly double quote
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "“", with: "“")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "“", with: "“")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "“", with: "“")
|
||
|
||
// Right curly double quote
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "â€", with: "”")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "”", with: "”")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "”", with: "”")
|
||
|
||
// Em dash
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "—", with: "—")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "—", with: "—")
|
||
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "Â", with: "")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "Â ", with: "")
|
||
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: " …", with: "…")
|
||
filteredHTML = filteredHTML.replacingOccurrences(of: "…", with: "…")
|
||
|
||
return filteredHTML
|
||
}
|
||
}
|