in Sources/SwiftDocC/Model/DocumentationNode.swift [292:354]
mutating func initializeSymbolContent(documentationExtension: Article?, engine: DiagnosticEngine) {
precondition(unifiedSymbol != nil && symbol != nil, "You can only call initializeSymbolContent() on a symbol node.")
let (markup, docChunks) = Self.contentFrom(
documentedSymbol: unifiedSymbol?.documentedSymbol,
documentationExtension: documentationExtension,
engine: engine
)
self.markup = markup
self.docChunks = docChunks
// Parse the structured markup
let markupModel = DocumentationMarkup(markup: markup)
let symbolAvailability = symbol!.mixins.getValueIfPresent(for: SymbolGraph.Symbol.Availability.self)
// Use a deprecation summary from the symbol docs or article content.
var deprecated: DeprecatedSection? = markupModel.deprecation.map { DeprecatedSection.init(content: $0.elements) }
// When deprecation is not authored explicitly, try using a deprecation message from annotation.
if deprecated == nil, let symbolAvailability = symbolAvailability {
let availabilityData = AvailabilityParser(symbolAvailability)
deprecated = availabilityData.deprecationMessage().map(DeprecatedSection.init(text:))
}
// Merge in the symbol documentation content
let semantic = self.semantic as! Symbol
// Symbol is a by-reference type so we're updating the original `semantic` property instance.
semantic.abstractSectionVariants = DocumentationDataVariants(
defaultVariantValue: markupModel.abstractSection
)
semantic.discussionVariants = DocumentationDataVariants(
defaultVariantValue: markupModel.discussionSection
)
semantic.topicsVariants = DocumentationDataVariants(
defaultVariantValue: markupModel.topicsSection
)
semantic.seeAlsoVariants = DocumentationDataVariants(
defaultVariantValue: markupModel.seeAlsoSection
)
semantic.deprecatedSummaryVariants = DocumentationDataVariants(
defaultVariantValue: deprecated
)
semantic.redirectsVariants = DocumentationDataVariants(
defaultVariantValue: documentationExtension?.redirects
)
if let returns = markupModel.discussionTags?.returns, !returns.isEmpty {
semantic.returnsSectionVariants = DocumentationDataVariants(
defaultVariantValue: ReturnsSection(content: returns[0].contents)
)
}
if let parameters = markupModel.discussionTags?.parameters, !parameters.isEmpty {
semantic.parametersSectionVariants = DocumentationDataVariants(
defaultVariantValue: ParametersSection(parameters: parameters)
)
}
updateAnchorSections()
}