in Sources/SwiftDocC/Model/Rendering/RenderSectionTranslator/DeclarationsSectionTranslator.swift [15:65]
func translateSection(
for symbol: Symbol,
renderNode: inout RenderNode,
renderNodeTranslator: inout RenderNodeTranslator
) -> VariantCollection<CodableContentSection?>? {
translateSectionToVariantCollection(
documentationDataVariants: symbol.declarationVariants
) { trait, declaration -> RenderSection? in
guard !declaration.isEmpty else {
return nil
}
var declarations = [DeclarationRenderSection]()
for pair in declaration {
let (platforms, declaration) = pair
let renderedTokens = declaration.declarationFragments.map { token -> DeclarationRenderSection.Token in
// Create a reference if one found
var reference: ResolvedTopicReference?
if let preciseIdentifier = token.preciseIdentifier,
let resolved = renderNodeTranslator.context.symbolIndex[preciseIdentifier]?.reference {
reference = resolved
// Add relationship to render references
renderNodeTranslator.collectedTopicReferences.append(resolved)
}
// Add the declaration token
return DeclarationRenderSection.Token(fragment: token, identifier: reference?.absoluteString)
}
let platformNames = platforms.sorted { (lhs, rhs) -> Bool in
guard let lhsValue = lhs, let rhsValue = rhs else {
return lhs == nil
}
return lhsValue.rawValue < rhsValue.rawValue
}
declarations.append(
DeclarationRenderSection(
languages: [trait.interfaceLanguage ?? renderNodeTranslator.identifier.sourceLanguage.id],
platforms: platformNames,
tokens: renderedTokens
)
)
}
return DeclarationsRenderSection(declarations: declarations)
}
}