Skip to content

Commit

Permalink
Merge pull request #6759 from vector-im/aringenbach/6748_fix_percent_…
Browse files Browse the repository at this point in the history
…encoding_and_markdown

Fix render of links with both characters requiring percent encoding and markdown-like syntax
  • Loading branch information
aringenbach authored Sep 23, 2022
2 parents 5635bf7 + 04ef849 commit b5184fa
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,11 @@ private extension CMarkNode {
private extension String {
/// Returns array of URLs detected inside the String.
var containedUrls: [NSTextCheckingResult] {
guard let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue) else {
guard let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue),
let percentEncoded = self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else {
return []
}

return detector.matches(in: self, options: [], range: NSRange(location: 0, length: self.utf16.count))
return detector.matches(in: percentEncoded, options: [], range: NSRange(location: 0, length: percentEncoded.utf16.count))
}
}
14 changes: 14 additions & 0 deletions RiotTests/MarkdownToHTMLRendererTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,20 @@ final class MarkdownToHTMLRendererTests: XCTestCase {
testRenderHTML(input: input, expectedOutput: expectedOutput)
}

func testRenderRepairedLinksWithCharactersRequiringPercentEncoding() {
let input = "Some link with special characters: "
+ "https://matrix.to/#/#_oftc_#matrix-dev:matrix.org"
+ " "
+ "https://matrix.to/#/#?=+-_#_"
+ "\n"
let expectedOutput = "<p>Some link with special characters: "
+ "https://matrix.to/#/#_oftc_#matrix-dev:matrix.org"
+ " "
+ "https://matrix.to/#/#?=+-_#_</p>"
+ "\n"
testRenderHTML(input: input, expectedOutput: expectedOutput)
}

/// Test links inside codeblocks.
func testRenderLinksInCodeblock() {
let input = "```"
Expand Down
1 change: 1 addition & 0 deletions changelog.d/6748.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix render of links with both characters requiring percent encoding and markdown-like syntax

0 comments on commit b5184fa

Please sign in to comment.