Files
NetNewsWire/Shared/Article Rendering/ArticleRenderingSpecialCases.swift

63 lines
2.0 KiB
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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
}
}