Skip to content

Commit e97b588

Browse files
committed
Correctly set page color for symbol pages
Fixes a bug where the `@PageColor` metadata directive was ignored when used on symbol pages. rdar://107962126
1 parent 714d523 commit e97b588

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

Sources/SwiftDocC/Model/Rendering/RenderNodeTranslator.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,6 +1244,10 @@ public struct RenderNodeTranslator: SemanticVisitor {
12441244
}
12451245
}
12461246
}
1247+
1248+
if let pageColor = documentationNode.metadata?.pageColor {
1249+
node.metadata.color = TopicColor(standardColorIdentifier: pageColor.rawValue)
1250+
}
12471251

12481252
var metadataCustomDictionary : [String: String] = [:]
12491253
if let customMetadatas = documentationNode.metadata?.customMetadata {

Tests/SwiftDocCTests/Rendering/RenderNodeTranslatorTests.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,4 +1226,25 @@ class RenderNodeTranslatorTests: XCTestCase {
12261226
"yellow"
12271227
)
12281228
}
1229+
1230+
func testPageColorMetadataInSymbolExtension() throws {
1231+
let (bundle, context) = try testBundleAndContext(named: "MixedManualAutomaticCuration")
1232+
let reference = ResolvedTopicReference(
1233+
bundleIdentifier: bundle.identifier,
1234+
path: "/documentation/TestBed",
1235+
sourceLanguage: .swift
1236+
)
1237+
let symbol = try XCTUnwrap(context.entity(with: reference).semantic as? Symbol)
1238+
var translator = RenderNodeTranslator(
1239+
context: context,
1240+
bundle: bundle,
1241+
identifier: reference,
1242+
source: nil
1243+
)
1244+
let renderNode = try XCTUnwrap(translator.visitSymbol(symbol) as? RenderNode)
1245+
1246+
let encodedSymbol = try JSONEncoder().encode(renderNode)
1247+
let roundTrippedSymbol = try JSONDecoder().decode(RenderNode.self, from: encodedSymbol)
1248+
XCTAssertEqual(roundTrippedSymbol.metadata.color?.standardColorIdentifier, "purple")
1249+
}
12291250
}

Tests/SwiftDocCTests/Test Bundles/MixedManualAutomaticCuration.docc/TestBed.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# ``TestBed``
22

3+
@Metadata {
4+
@PageColor(purple)
5+
}
6+
37
TestBed framework.
48

59
TestBed content.

0 commit comments

Comments
 (0)