Fix lint issues.

This commit is contained in:
Brent Simmons
2025-01-23 22:17:28 -08:00
parent ec88ebee22
commit ae2b017ae0
10 changed files with 47 additions and 26 deletions

View File

@@ -8,14 +8,21 @@ line_length:
ignores_comments: true
ignores_urls: true
large_tuple:
warning: 3
error: 4
disabled_rules:
- todo
- for_where
- file_length
- force_cast
- force_try
excluded:
- Modules/Secrets/Sources/Secrets/SecretKey.swift
- Modules/Account/Tests/AccountTests/Feedly/
- Widget/Resources/Localized.swift
- Shared/Extensions/NSAttributedString+NetNewsWire.swift

View File

@@ -18,7 +18,7 @@ public enum ArticleExtractorState {
case cancelled
}
protocol ArticleExtractorDelegate {
protocol ArticleExtractorDelegate: AnyObject {
func articleExtractionDidFail(with: Error)
func articleExtractionDidComplete(extractedArticle: ExtractedArticle)
}
@@ -29,7 +29,7 @@ class ArticleExtractor {
var state: ArticleExtractorState!
var article: ExtractedArticle?
var delegate: ArticleExtractorDelegate?
weak var delegate: ArticleExtractorDelegate?
var articleLink: String?
private var url: URL!

View File

@@ -16,7 +16,12 @@ import Account
struct ArticleRenderer {
typealias Rendering = (style: String, html: String, title: String, baseURL: String)
struct Rendering {
let style: String
let html: String
let title: String
let baseURL: String
}
struct Page {
let url: URL
@@ -123,27 +128,27 @@ struct ArticleRenderer {
static func articleHTML(article: Article, extractedArticle: ExtractedArticle? = nil, theme: ArticleTheme) -> Rendering {
let renderer = ArticleRenderer(article: article, extractedArticle: extractedArticle, theme: theme)
return (renderer.articleCSS, renderer.articleHTML, renderer.title, renderer.baseURL ?? "")
return Rendering(style: renderer.articleCSS, html: renderer.articleHTML, title: renderer.title, baseURL: renderer.baseURL ?? "")
}
static func multipleSelectionHTML(theme: ArticleTheme) -> Rendering {
let renderer = ArticleRenderer(article: nil, extractedArticle: nil, theme: theme)
return (renderer.articleCSS, renderer.multipleSelectionHTML, renderer.title, renderer.baseURL ?? "")
return Rendering(style: renderer.articleCSS, html: renderer.multipleSelectionHTML, title: renderer.title, baseURL: renderer.baseURL ?? "")
}
static func loadingHTML(theme: ArticleTheme) -> Rendering {
let renderer = ArticleRenderer(article: nil, extractedArticle: nil, theme: theme)
return (renderer.articleCSS, renderer.loadingHTML, renderer.title, renderer.baseURL ?? "")
return Rendering(style: renderer.articleCSS, html: renderer.loadingHTML, title: renderer.title, baseURL: renderer.baseURL ?? "")
}
static func noSelectionHTML(theme: ArticleTheme) -> Rendering {
let renderer = ArticleRenderer(article: nil, extractedArticle: nil, theme: theme)
return (renderer.articleCSS, renderer.noSelectionHTML, renderer.title, renderer.baseURL ?? "")
return Rendering(style: renderer.articleCSS, html: renderer.noSelectionHTML, title: renderer.title, baseURL: renderer.baseURL ?? "")
}
static func noContentHTML(theme: ArticleTheme) -> Rendering {
let renderer = ArticleRenderer(article: nil, extractedArticle: nil, theme: theme)
return (renderer.articleCSS, renderer.noContentHTML, renderer.title, renderer.baseURL ?? "")
return Rendering(style: renderer.articleCSS, html: renderer.noContentHTML, title: renderer.title, baseURL: renderer.baseURL ?? "")
}
}
@@ -259,6 +264,7 @@ private extension ArticleRenderer {
return d
}
// swiftlint:disable:next cyclomatic_complexity
func byline() -> String {
guard let authors = article?.authors ?? article?.feed?.authors, !authors.isEmpty else {
return ""

View File

@@ -78,10 +78,7 @@ final class DeleteCommand: UndoableCommand {
}
for node in nodes {
if let _ = node.representedObject as? Feed {
continue
}
if let _ = node.representedObject as? Folder {
if node.representedObject is Feed || node.representedObject is Folder {
continue
}
return false
@@ -171,9 +168,9 @@ private struct SidebarItemSpecifier {
func restore() {
if let _ = feed {
if feed != nil {
restoreFeed()
} else if let _ = folder {
} else if folder != nil {
restoreFolder()
}
}
@@ -268,9 +265,9 @@ private struct DeleteActionName {
var numberOfFolders = 0
for node in nodes {
if let _ = node.representedObject as? Feed {
if node.representedObject is Feed {
numberOfFeeds += 1
} else if let _ = node.representedObject as? Folder {
} else if node.representedObject is Folder {
numberOfFolders += 1
} else {
return nil // Delete only Feeds and Folders.

View File

@@ -56,7 +56,20 @@ private extension SendToMarsEditCommand {
let body = article.contentHTML ?? article.contentText ?? article.summary
let authorName = article.authors?.first?.name
let sender = SendToBlogEditorApp(targetDescriptor: targetDescriptor, title: article.title, body: body, summary: article.summary, link: article.externalLink, permalink: article.link, subject: nil, creator: authorName, commentsURL: nil, guid: article.uniqueID, sourceName: article.feed?.nameForDisplay, sourceHomeURL: article.feed?.homePageURL, sourceFeedURL: article.feed?.url)
let sender = SendToBlogEditorApp(
targetDescriptor: targetDescriptor,
title: article.title,
body: body,
summary: article.summary,
link: article.externalLink,
permalink: article.link,
subject: nil,
creator: authorName, commentsURL: nil,
guid: article.uniqueID,
sourceName: article.feed?.nameForDisplay,
sourceHomeURL: article.feed?.homePageURL,
sourceFeedURL: article.feed?.url
)
sender.send()
}

View File

@@ -22,7 +22,7 @@ final class SendToMicroBlogCommand: SendToCommand {
func canSendObject(_ object: Any?, selectedText: String?) -> Bool {
microBlogApp.updateStatus()
guard microBlogApp.existsOnDisk, let article = (object as? ArticlePasteboardWriter)?.article, let _ = article.preferredLink else {
guard microBlogApp.existsOnDisk, let article = (object as? ArticlePasteboardWriter)?.article, article.preferredLink != nil else {
return false
}

View File

@@ -138,6 +138,7 @@ extension Article {
}
}
// swiftlint:disable:next cyclomatic_complexity
func byline() -> String {
guard let authors = authors ?? feed?.authors, !authors.isEmpty else {
return ""

View File

@@ -41,7 +41,7 @@ public class ColorHash {
for char in "\(str)x" {
if let scl = String(char).unicodeScalars.first?.value {
if hash > maxSafeInteger {
hash = hash / seed2
hash /= seed2
}
hash = hash * seed + CGFloat(scl)
}

View File

@@ -18,9 +18,7 @@ protocol SortableArticle {
struct ArticleSorter {
static func sortedByDate<T: SortableArticle>(articles: [T],
sortDirection: ComparisonResult,
groupByFeed: Bool) -> [T] {
static func sortedByDate<T: SortableArticle>(articles: [T], sortDirection: ComparisonResult, groupByFeed: Bool) -> [T] {
if groupByFeed {
return sortedByFeedName(articles: articles, sortByDateDirection: sortDirection)
} else {
@@ -30,8 +28,7 @@ struct ArticleSorter {
// MARK: -
private static func sortedByFeedName<T: SortableArticle>(articles: [T],
sortByDateDirection: ComparisonResult) -> [T] {
private static func sortedByFeedName<T: SortableArticle>(articles: [T], sortByDateDirection: ComparisonResult) -> [T] {
// Group articles by "feed-feedID" - feed ID is used to differentiate between
// two feeds that have the same name
let groupedArticles = Dictionary(grouping: articles) { "\($0.sortableName.lowercased())-\($0.sortableFeedID)" }
@@ -44,8 +41,7 @@ struct ArticleSorter {
}
}
private static func sortedByDate<T: SortableArticle>(articles: [T],
sortDirection: ComparisonResult) -> [T] {
private static func sortedByDate<T: SortableArticle>(articles: [T], sortDirection: ComparisonResult) -> [T] {
return articles.sorted { (article1, article2) -> Bool in
if article1.sortableDate == article2.sortableDate {
return article1.sortableArticleID < article2.sortableArticleID

View File

@@ -64,6 +64,7 @@ public final class WidgetDataEncoder {
}
}
// swiftlint:disable:next function_body_length
private func encodeWidgetData(completion: @escaping (WidgetData?) -> Void) {
let dispatchGroup = DispatchGroup()
var groupError: Error?