Skip to content

Commit 9c79734

Browse files
Fix alt text from video directives not getting passed to the corresponding render node. (#804)
rdar://120903552
1 parent 117feb0 commit 9c79734

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

Sources/SwiftDocC/Model/Rendering/RenderNodeTranslator.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,11 @@ public struct RenderNodeTranslator: SemanticVisitor {
493493
}
494494

495495
public mutating func visitVideoMedia(_ videoMedia: VideoMedia) -> RenderTree? {
496-
return createAndRegisterRenderReference(forMedia: videoMedia.source, poster: videoMedia.poster)
496+
return createAndRegisterRenderReference(
497+
forMedia: videoMedia.source,
498+
poster: videoMedia.poster,
499+
altText: videoMedia.altText
500+
)
497501
}
498502

499503
public mutating func visitChapter(_ chapter: Chapter) -> RenderTree? {

Tests/SwiftDocCTests/Semantics/VideoMediaTests.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,4 +311,30 @@ class VideoMediaTests: XCTestCase {
311311

312312
XCTAssertEqual(renderedContent, [])
313313
}
314+
315+
func testVideoDirectiveWithAltText() throws {
316+
let source = """
317+
@Video(source: "introvideo", alt: "A short video of a sloth jumping down from a branch and smiling.")
318+
"""
319+
let document = Document(parsing: source, options: .parseBlockDirectives)
320+
let directive = document.child(at: 0)! as! BlockDirective
321+
let (bundle, context) = try testBundleAndContext(named: "TestBundle")
322+
var problems = [Problem]()
323+
let video = VideoMedia(from: directive, source: nil, for: bundle, in: context, problems: &problems)
324+
let reference = ResolvedTopicReference(
325+
bundleIdentifier: bundle.identifier,
326+
path: "",
327+
sourceLanguage: .swift
328+
)
329+
var translator = RenderNodeTranslator(
330+
context: context,
331+
bundle: bundle,
332+
identifier: reference,
333+
source: nil
334+
)
335+
let videoMediaReference = translator.visitVideoMedia(video!) as! RenderReferenceIdentifier
336+
let videoMedia = translator.videoReferences[videoMediaReference.identifier]
337+
// Check that the video references in the node translator contains the alt text.
338+
XCTAssertEqual(videoMedia?.altText, "A short video of a sloth jumping down from a branch and smiling.")
339+
}
314340
}

0 commit comments

Comments
 (0)