Fix crash when comments present in html

This commit is contained in:
Shadowfacts 2023-04-03 23:39:22 -04:00
parent e5363b2e21
commit 29b594207c
1 changed files with 16 additions and 13 deletions

View File

@ -32,17 +32,20 @@ struct HTMLConverter {
let doc = try! SwiftSoup.parseBodyFragment(html)
let body = doc.body()!
let attributedText = attributedTextForHTMLNode(body)
let mutAttrString = NSMutableAttributedString(attributedString: attributedText)
mutAttrString.trimTrailingCharactersInSet(.whitespacesAndNewlines)
mutAttrString.collapseWhitespace()
mutAttrString.addAttribute(.paragraphStyle, value: paragraphStyle, range: mutAttrString.fullRange)
return mutAttrString
if let attributedText = attributedTextForHTMLNode(body) {
let mutAttrString = NSMutableAttributedString(attributedString: attributedText)
mutAttrString.trimTrailingCharactersInSet(.whitespacesAndNewlines)
mutAttrString.collapseWhitespace()
mutAttrString.addAttribute(.paragraphStyle, value: paragraphStyle, range: mutAttrString.fullRange)
return mutAttrString
} else {
return NSAttributedString()
}
}
private func attributedTextForHTMLNode(_ node: Node, usePreformattedText: Bool = false) -> NSAttributedString {
private func attributedTextForHTMLNode(_ node: Node, usePreformattedText: Bool = false) -> NSAttributedString? {
switch node {
case let node as TextNode:
let text: String
@ -65,7 +68,9 @@ struct HTMLConverter {
}
}
attributed.append(attributedTextForHTMLNode(child, usePreformattedText: usePreformattedText || node.tagName() == "pre"))
if let childText = attributedTextForHTMLNode(child, usePreformattedText: usePreformattedText || node.tagName() == "pre") {
attributed.append(childText)
}
if appendEllipsis {
attributed.append(NSAttributedString(""))
@ -134,10 +139,8 @@ struct HTMLConverter {
}
return attributed
case is DataNode:
return NSAttributedString()
default:
fatalError("Unexpected node type \(type(of: node))")
return nil
}
}