Fix crash when parsing invalid URLs
This commit is contained in:
parent
dd0dcbde9c
commit
255e5d7ff4
|
@ -44,8 +44,6 @@ public struct GeminiParser {
|
||||||
// URL(string:relativeTo:) does not handle // meaning the same protocol as the base URL
|
// URL(string:relativeTo:) does not handle // meaning the same protocol as the base URL
|
||||||
urlString = baseURL.scheme! + ":" + urlString
|
urlString = baseURL.scheme! + ":" + urlString
|
||||||
}
|
}
|
||||||
// todo: if the URL initializer fails, should there be a .link line with a nil URL?
|
|
||||||
let url = URL(string: urlString, relativeTo: baseURL)!.absoluteURL
|
|
||||||
|
|
||||||
let text: String?
|
let text: String?
|
||||||
if textStart < line.endIndex {
|
if textStart < line.endIndex {
|
||||||
|
@ -54,7 +52,18 @@ public struct GeminiParser {
|
||||||
text = nil
|
text = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
doc.lines.append(.link(url, text: text))
|
if let url = URL(string: urlString, relativeTo: baseURL)?.absoluteURL {
|
||||||
|
doc.lines.append(.link(url, text: text))
|
||||||
|
} else {
|
||||||
|
let str: String
|
||||||
|
if let text = text {
|
||||||
|
// todo: localize me?
|
||||||
|
str = "\(text): \(urlString)"
|
||||||
|
} else {
|
||||||
|
str = urlString
|
||||||
|
}
|
||||||
|
doc.lines.append(.text(str))
|
||||||
|
}
|
||||||
} else if line.starts(with: "#") {
|
} else if line.starts(with: "#") {
|
||||||
let level: Document.HeadingLevel
|
let level: Document.HeadingLevel
|
||||||
if line.starts(with: "###") {
|
if line.starts(with: "###") {
|
||||||
|
|
Loading…
Reference in New Issue