File: RenderReferenceHierarchy.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (37 lines) | stat: -rw-r--r-- 1,585 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
 This source file is part of the Swift.org open source project

 Copyright (c) 2021 Apple Inc. and the Swift project authors
 Licensed under Apache License v2.0 with Runtime Library Exception

 See https://swift.org/LICENSE.txt for license information
 See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/

import Foundation

/// A node that represents API symbol hierarchy.
public struct RenderReferenceHierarchy: Codable, Equatable {
    /// The paths (breadcrumbs) that lead from the landing page to the given symbol.
    ///
    /// A single path is a list of topic-graph references, that trace the curation
    /// through the documentation hierarchy from a framework landing page to a
    /// given target symbol.
    ///
    /// Symbols curated multiple times have multiple paths, for example:
    ///  - Example Framework / Example Type / Example Property
    ///  - Example Framework / My Article / Example Type / Example Property
    ///  - Example Framework / Related Type / Example Property
    /// > Note: The first element in `paths` is the _canonical_ breadcrumb for the symbol.
    ///
    /// Landing pages' hierarchy contains a single, empty path.
    public let paths: [[String]]
}

// Diffable conformance
extension RenderReferenceHierarchy: RenderJSONDiffable {
    /// Returns the difference between this RenderReferenceHierarchy and the given one.
    func difference(from other: RenderReferenceHierarchy, at path: CodablePath) -> JSONPatchDifferences {
        return paths.difference(from: other.paths, at: path + [CodingKeys.paths])
    }
}