Skip to content

Commit 55fbcce

Browse files
authored
Avoid full URL parsing to trim a known prefix from a reference string (#1323)
rdar://162860967
1 parent 57c60f3 commit 55fbcce

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

Sources/SwiftDocC/Infrastructure/External Data/OutOfProcessReferenceResolver.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,10 @@ extension OutOfProcessReferenceResolver {
411411
return .success( makeReference(for: cachedSummary) )
412412
}
413413

414-
let linkString = unresolvedReference.topicURL.url.withoutHostAndPortAndScheme().standardized.absoluteString
414+
let linkString = String(
415+
unresolvedReferenceString.dropFirst(6) // "doc://"
416+
.drop(while: { $0 != "/" }) // the known identifier (host component)
417+
)
415418
let response: ResponseV2 = try longRunningProcess.sendAndWait(request: RequestV2.link(linkString))
416419

417420
switch response {

Tests/SwiftDocCTests/OutOfProcessReferenceResolverV2Tests.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,9 @@ class OutOfProcessReferenceResolverV2Tests: XCTestCase {
531531
read # Wait for 3rd request
532532
echo $REPLY >> \(savedRequestsFile.path) # Save the raw request
533533
echo '{"failure":"ignored error message"}' # Respond
534+
read # Wait for 4th request
535+
echo $REPLY >> \(savedRequestsFile.path) # Save the raw request
536+
echo '{"failure":"ignored error message"}' # Respond
534537
""".write(to: executableLocation, atomically: true, encoding: .utf8)
535538

536539
// `0o0700` is `-rwx------` (read, write, & execute only for owner)
@@ -544,10 +547,11 @@ class OutOfProcessReferenceResolverV2Tests: XCTestCase {
544547
TextFile(name: "Something.md", utf8Content: """
545548
# My root page
546549
547-
This page contains an 3 external links hat will fail to resolve:
550+
This page contains an 4 external links that will fail to resolve:
548551
- <doc://\(externalBundleID.rawValue)/some-link>
549552
- <doc://\(externalBundleID.rawValue)/path/to/some-link>
550553
- <doc://\(externalBundleID.rawValue)/path/to/some-link#some-fragment>
554+
- <doc://\(externalBundleID.rawValue)//not-parsable-as-url>
551555
""")
552556
])
553557
let inputDirectory = Folder(name: "path", content: [Folder(name: "to", content: [catalog])])
@@ -568,6 +572,7 @@ class OutOfProcessReferenceResolverV2Tests: XCTestCase {
568572
XCTAssertEqual(readRequests, """
569573
{"link":"/some-link"}
570574
{"link":"/path/to/some-link"}
575+
{"link":"//not-parsable-as-url"}
571576
{"link":"/path/to/some-link#some-fragment"}
572577
""")
573578
}

0 commit comments

Comments
 (0)