From 4d0fc1d9a2e4c64aa369f6599f1c744d3c3d42df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20R=C3=B6nnqvist?= Date: Fri, 24 Mar 2023 10:27:17 -0700 Subject: [PATCH] Use a custom scheme for local "Declared In" source file URLs (#513) rdar://106667647 --- Sources/SwiftDocC/SourceRepository/SourceRepository.swift | 7 +++++-- .../ConvertService/ConvertServiceTests.swift | 2 +- .../SourceRepository/SourceRepositoryTests.swift | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Sources/SwiftDocC/SourceRepository/SourceRepository.swift b/Sources/SwiftDocC/SourceRepository/SourceRepository.swift index 277c93dd7..e3d7a4284 100644 --- a/Sources/SwiftDocC/SourceRepository/SourceRepository.swift +++ b/Sources/SwiftDocC/SourceRepository/SourceRepository.swift @@ -92,12 +92,15 @@ public extension SourceRepository { /// Creates a source repository hosted by the device's filesystem. /// - /// Use this source repository to format `file://` links to files on the + /// Use this source repository to format `doc-source-file://` links to files on the /// device where documentation is being presented. + /// + /// This source repository uses a custom scheme to offer more control local source file navigation. static func localFilesystem() -> SourceRepository { SourceRepository( checkoutPath: "", - sourceServiceBaseURL: URL(fileURLWithPath: "/"), + // 2 slashes to specify an empty authority/host component and 1 slash to specify a base path at the root. + sourceServiceBaseURL: URL(string: "doc-source-file:///")!, formatLineNumber: { line in "L\(line)" } ) } diff --git a/Tests/SwiftDocCTests/DocumentationService/ConvertService/ConvertServiceTests.swift b/Tests/SwiftDocCTests/DocumentationService/ConvertService/ConvertServiceTests.swift index ed8a4959f..b53a79539 100644 --- a/Tests/SwiftDocCTests/DocumentationService/ConvertService/ConvertServiceTests.swift +++ b/Tests/SwiftDocCTests/DocumentationService/ConvertService/ConvertServiceTests.swift @@ -188,7 +188,7 @@ class ConvertServiceTests: XCTestCase { XCTAssertEqual( renderNode.metadata.remoteSource?.url.absoluteString, - "file:///private/tmp/test.swift#L2" + "doc-source-file:///private/tmp/test.swift#L2" ) } } diff --git a/Tests/SwiftDocCTests/SourceRepository/SourceRepositoryTests.swift b/Tests/SwiftDocCTests/SourceRepository/SourceRepositoryTests.swift index 181df4287..ad921a99c 100644 --- a/Tests/SwiftDocCTests/SourceRepository/SourceRepositoryTests.swift +++ b/Tests/SwiftDocCTests/SourceRepository/SourceRepositoryTests.swift @@ -88,7 +88,7 @@ class SourceRepositoryTests: XCTestCase { XCTAssertEqual( SourceRepository.localFilesystem() .format(sourceFileURL: URL(string: "file:///path/to/file")!, lineNumber: 5), - URL(string: "file:///path/to/file#L5")! + URL(string: "doc-source-file:///path/to/file#L5")! ) } }