Add unquoted relative URL support
This commit is contained in:
parent
d50056cd66
commit
a0ab99f737
@ -21,7 +21,9 @@ module PublicHelpers =
|
|||||||
/// post text
|
/// post text
|
||||||
let addBaseToRelativeUrls extra (text: string) =
|
let addBaseToRelativeUrls extra (text: string) =
|
||||||
if extra = "" then text
|
if extra = "" then text
|
||||||
else text.Replace("href=\"/", $"href=\"{extra}/").Replace("src=\"/", $"src=\"{extra}/")
|
else
|
||||||
|
text.Replace("href=\"/", $"href=\"{extra}/").Replace("href=/", $"href={extra}/")
|
||||||
|
.Replace("src=\"/", $"src=\"{extra}/").Replace("src=/", $"src={extra}/")
|
||||||
|
|
||||||
|
|
||||||
/// The model used to display the admin dashboard
|
/// The model used to display the admin dashboard
|
||||||
|
@ -8,16 +8,27 @@ open NodaTime
|
|||||||
|
|
||||||
/// Unit tests for the addBaseToRelativeUrls helper function
|
/// Unit tests for the addBaseToRelativeUrls helper function
|
||||||
let addBaseToRelativeUrlsTests = testList "PublicHelpers.addBaseToRelativeUrls" [
|
let addBaseToRelativeUrlsTests = testList "PublicHelpers.addBaseToRelativeUrls" [
|
||||||
test "succeeds when there is no extra URL path" {
|
test "succeeds for quoted URLs when there is no extra URL path" {
|
||||||
let testText = """<a href="/somewhere-else.html">Howdy></a>"""
|
let testText = """<a href="/somewhere-else.html"><img src="/howdy.png"></a>"""
|
||||||
let modified = addBaseToRelativeUrls "" testText
|
let modified = addBaseToRelativeUrls "" testText
|
||||||
Expect.equal modified testText "The text should not have been modified"
|
Expect.equal modified testText "The text should not have been modified"
|
||||||
}
|
}
|
||||||
test "succeeds with an extra URL path" {
|
test "succeeds for quoted URLs with an extra URL path" {
|
||||||
let testText =
|
let testText =
|
||||||
"""<a href="/my-link.htm"><img src="/pretty-picture.jpg"></a><a href="https://example.com>link</a>"""
|
"""<a href="/my-link.htm"><img src="/pretty-picture.jpg"></a><a href="https://example.com">link</a>"""
|
||||||
let expected =
|
let expected =
|
||||||
"""<a href="/a/b/my-link.htm"><img src="/a/b/pretty-picture.jpg"></a><a href="https://example.com>link</a>"""
|
"""<a href="/a/b/my-link.htm"><img src="/a/b/pretty-picture.jpg"></a><a href="https://example.com">link</a>"""
|
||||||
|
Expect.equal (addBaseToRelativeUrls "/a/b" testText) expected "Relative URLs not modified correctly"
|
||||||
|
}
|
||||||
|
test "succeeds for unquoted URLs when there is no extra URL path" {
|
||||||
|
let testText = "<a href=/over-here.html><img src=/arrow.gif></a>"
|
||||||
|
let modified = addBaseToRelativeUrls "" testText
|
||||||
|
Expect.equal modified testText "The text should not have been modified"
|
||||||
|
}
|
||||||
|
test "succeeds for unquoted URLs with an extra URL path" {
|
||||||
|
let testText = "<a href=/my-link.htm><img src=/pretty-picture.jpg></a><a href=https://example.com>link</a>"
|
||||||
|
let expected =
|
||||||
|
"<a href=/a/b/my-link.htm><img src=/a/b/pretty-picture.jpg></a><a href=https://example.com>link</a>"
|
||||||
Expect.equal (addBaseToRelativeUrls "/a/b" testText) expected "Relative URLs not modified correctly"
|
Expect.equal (addBaseToRelativeUrls "/a/b" testText) expected "Relative URLs not modified correctly"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user