Skip to content

Commit feb6dc1

Browse files
authored
rdar://103619334 make the REST and Plist render sections public. (#1020)
* rdar://103619334 make the REST and Plist render sections public. * Rename PlistDetailsRenderSection -> PropertyListDetailsRenderSection Give the type a public initializer, too. * Rename RESTResponseRenderSection.items to .responses * Rename RESTParametersRenderSection.items to .parameters * Remove the kind from PropertyListDetailsRenderSection initializer Because clients should not change the kind.
1 parent ac5ba29 commit feb6dc1

16 files changed

+128
-104
lines changed

Sources/SwiftDocC/Indexing/RenderSection+TextIndexing.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,13 +198,13 @@ extension TaskGroupRenderSection {
198198

199199
extension RESTParametersRenderSection {
200200
public var headings: [String] {
201-
return items.flatMap {
201+
return parameters.flatMap {
202202
return $0.headings
203203
}
204204
}
205205

206206
public func rawIndexableTextContent(references: [String : RenderReference]) -> String {
207-
return items.map {
207+
return parameters.map {
208208
return $0.rawIndexableTextContent(references: references)
209209
}.joined(separator: " ")
210210
}
@@ -236,13 +236,13 @@ extension RESTResponse {
236236

237237
extension RESTResponseRenderSection {
238238
public var headings: [String] {
239-
return items.flatMap {
239+
return responses.flatMap {
240240
return $0.headings
241241
}
242242
}
243243

244244
public func rawIndexableTextContent(references: [String : RenderReference]) -> String {
245-
return items.map {
245+
return responses.map {
246246
return $0.rawIndexableTextContent(references: references)
247247
}.joined(separator: " ")
248248
}
@@ -326,7 +326,7 @@ extension AttributesRenderSection {
326326
}
327327
}
328328

329-
extension PlistDetailsRenderSection {
329+
extension PropertyListDetailsRenderSection {
330330
public var headings: [String] {
331331
if let displayName = details.displayName {
332332
return [details.rawKey, displayName]

Sources/SwiftDocC/Model/Rendering/Diffing/AnyRenderSection.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ struct AnyRenderSection: Equatable, Encodable, RenderJSONDiffable {
3737
case (.parameters, .parameters):
3838
return (value as! ParametersRenderSection).difference(from: (other.value as! ParametersRenderSection), at: path)
3939
case (.plistDetails, .plistDetails):
40-
return (value as! PlistDetailsRenderSection).difference(from: (other.value as! PlistDetailsRenderSection), at: path)
40+
return (value as! PropertyListDetailsRenderSection).difference(from: (other.value as! PropertyListDetailsRenderSection), at: path)
4141
case (.possibleValues, .possibleValues):
4242
return (value as! PossibleValuesRenderSection).difference(from: (other.value as! PossibleValuesRenderSection), at: path)
4343
case (.relationships, .relationships):
@@ -104,7 +104,7 @@ struct AnyRenderSection: Equatable, Encodable, RenderJSONDiffable {
104104
case (.parameters, .parameters):
105105
return (lhs.value as! ParametersRenderSection) == (rhs.value as! ParametersRenderSection)
106106
case (.plistDetails, .plistDetails):
107-
return (lhs.value as! PlistDetailsRenderSection) == (rhs.value as! PlistDetailsRenderSection)
107+
return (lhs.value as! PropertyListDetailsRenderSection) == (rhs.value as! PropertyListDetailsRenderSection)
108108
case (.possibleValues, .possibleValues):
109109
return (lhs.value as! PossibleValuesRenderSection) == (rhs.value as! PossibleValuesRenderSection)
110110
case (.relationships, .relationships):

Sources/SwiftDocC/Model/Rendering/RenderNode/CodableContentSection.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public struct CodableContentSection: Codable, Equatable {
6262
case .restResponses:
6363
section = try RESTResponseRenderSection(from: decoder)
6464
case .plistDetails:
65-
section = try PlistDetailsRenderSection(from: decoder)
65+
section = try PropertyListDetailsRenderSection(from: decoder)
6666
case .possibleValues:
6767
section = try PossibleValuesRenderSection(from: decoder)
6868
case .mentions:

Sources/SwiftDocC/Model/Rendering/RenderSectionTranslator/HTTPParametersSectionTranslator.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ struct HTTPParametersSectionTranslator: RenderSectionTranslator {
2929

3030
return RESTParametersRenderSection(
3131
title: "\(parameterSource.rawValue.capitalized) Parameters",
32-
items: filteredParameters.map { renderNodeTranslator.createRenderProperty(name: $0.name, contents: $0.contents, required: $0.required, symbol: $0.symbol) },
32+
parameters: filteredParameters.map { renderNodeTranslator.createRenderProperty(name: $0.name, contents: $0.contents, required: $0.required, symbol: $0.symbol) },
3333
source: parameterSource
3434
)
3535
}

Sources/SwiftDocC/Model/Rendering/RenderSectionTranslator/HTTPResponsesSectionTranslator.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct HTTPResponsesSectionTranslator: RenderSectionTranslator {
2727

2828
return RESTResponseRenderSection(
2929
title: HTTPResponsesSection.title,
30-
items: filteredResponses.map { translateResponse($0, &renderNodeTranslator) }
30+
responses: filteredResponses.map { translateResponse($0, &renderNodeTranslator) }
3131
)
3232
}
3333
}

Sources/SwiftDocC/Model/Rendering/RenderSectionTranslator/PlistDetailsSectionTranslator.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import SymbolKit
1414
/// Translates a symbol's details into a render nodes's details section.
1515
struct PlistDetailsSectionTranslator: RenderSectionTranslator, Decodable {
1616

17-
private func generatePlistDetailsRenderSection(_ symbol: Symbol, plistDetails: SymbolGraph.Symbol.PlistDetails) -> PlistDetailsRenderSection {
18-
PlistDetailsRenderSection(
19-
details: PlistDetailsRenderSection.Details(
17+
private func generatePropertyListDetailsRenderSection(_ symbol: Symbol, plistDetails: SymbolGraph.Symbol.PlistDetails) -> PropertyListDetailsRenderSection {
18+
PropertyListDetailsRenderSection(
19+
details: PropertyListDetailsRenderSection.Details(
2020
rawKey: plistDetails.rawKey,
2121
value: [TypeDetails(baseType: plistDetails.baseType, arrayMode: plistDetails.arrayMode)],
2222
platforms: [],
@@ -33,7 +33,7 @@ struct PlistDetailsSectionTranslator: RenderSectionTranslator, Decodable {
3333
}) else {
3434
return nil
3535
}
36-
let section = generatePlistDetailsRenderSection(symbol, plistDetails: plistDetails)
36+
let section = generatePropertyListDetailsRenderSection(symbol, plistDetails: plistDetails)
3737
return VariantCollection(defaultValue: CodableContentSection(section))
3838
}
3939

Sources/SwiftDocC/Model/Rendering/Symbol/PlistDetailsRenderSection.swift renamed to Sources/SwiftDocC/Model/Rendering/Symbol/PropertyListDetailsRenderSection.swift

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,41 +33,54 @@ public enum TitleStyle: String, Codable, Equatable {
3333
}
3434

3535
/// A section that contains details about a property list key.
36-
struct PlistDetailsRenderSection: RenderSection, Equatable {
37-
var kind: RenderSectionKind = .plistDetails
36+
public struct PropertyListDetailsRenderSection: RenderSection, Equatable {
37+
public var kind: RenderSectionKind = .plistDetails
3838
/// A title for the section.
39-
var title = "Details"
39+
public var title = "Details"
4040

4141
/// Details for a property list key.
42-
struct Details: Codable, Equatable {
42+
public struct Details: Codable, Equatable {
4343
/// The name of the key.
44-
let rawKey: String
44+
public let rawKey: String
4545
/// A list of types acceptable for this key's value.
46-
let value: [TypeDetails]
46+
public let value: [TypeDetails]
4747
/// A list of platforms to which this key applies.
48-
let platforms: [String]
48+
public let platforms: [String]
4949
/// An optional, human-friendly name of the key.
50-
let displayName: String?
50+
public let displayName: String?
5151
/// A title rendering style.
52-
let titleStyle: PropertyListTitleStyle
53-
52+
public let titleStyle: PropertyListTitleStyle
53+
5454
enum CodingKeys: String, CodingKey {
5555
case rawKey = "name"
5656
case value
5757
case platforms
5858
case displayName = "ideTitle"
5959
case titleStyle
6060
}
61+
62+
public init(rawKey: String, value: [TypeDetails], platforms: [String], displayName: String?, titleStyle: PropertyListTitleStyle) {
63+
self.rawKey = rawKey
64+
self.value = value
65+
self.platforms = platforms
66+
self.displayName = displayName
67+
self.titleStyle = titleStyle
68+
}
6169
}
6270

6371
/// The details of the property key.
64-
let details: Details
72+
public let details: Details
73+
74+
public init(title: String = "Details", details: Details) {
75+
self.title = title
76+
self.details = details
77+
}
6578
}
6679

6780
// Diffable conformance
68-
extension PlistDetailsRenderSection: RenderJSONDiffable {
69-
/// Returns the differences between this PlistDetailsRenderSection and the given one.
70-
func difference(from other: PlistDetailsRenderSection, at path: CodablePath) -> JSONPatchDifferences {
81+
extension PropertyListDetailsRenderSection: RenderJSONDiffable {
82+
/// Returns the differences between this PropertyListDetailsRenderSection and the given one.
83+
func difference(from other: PropertyListDetailsRenderSection, at path: CodablePath) -> JSONPatchDifferences {
7184
var diffBuilder = DifferenceBuilder(current: self, other: other, basePath: path)
7285

7386
diffBuilder.addDifferences(atKeyPath: \.kind, forKey: CodingKeys.kind)
@@ -76,8 +89,8 @@ extension PlistDetailsRenderSection: RenderJSONDiffable {
7689
return diffBuilder.differences
7790
}
7891

79-
/// Returns if this PlistDetailsRenderSection is similar enough to the given one.
80-
func isSimilar(to other: PlistDetailsRenderSection) -> Bool {
92+
/// Returns if this PropertyListDetailsRenderSection is similar enough to the given one.
93+
func isSimilar(to other: PropertyListDetailsRenderSection) -> Bool {
8194
return self.title == other.title
8295
}
8396
}

Sources/SwiftDocC/Model/Rendering/Symbol/RESTBodyRenderSection.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import Foundation
1212

1313
/// A section that contains a REST request-body details.
14-
struct RESTBodyRenderSection: RenderSection, Equatable {
14+
public struct RESTBodyRenderSection: RenderSection, Equatable {
1515
public var kind: RenderSectionKind = .restBody
1616
/// A title for the section.
1717
public let title: String

Sources/SwiftDocC/Model/Rendering/Symbol/RESTParametersRenderSection.swift

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Foundation
1414
///
1515
/// Parameter sections might describe parameters used in
1616
/// the URL query, the URL path, HTTP headers, or a multi-part HTTP body.
17-
enum RESTParameterSource: String, Codable {
17+
public enum RESTParameterSource: String, Codable {
1818
/// A named URL query parameter, for example, `?category=90s`.
1919
case query
2020
/// A named URL path parameter, for example, `/artists/MyArtist`.
@@ -26,23 +26,30 @@ enum RESTParameterSource: String, Codable {
2626
}
2727

2828
/// A section that contains a list of REST parameters.
29-
struct RESTParametersRenderSection: RenderSection, Equatable {
29+
public struct RESTParametersRenderSection: RenderSection, Equatable {
3030
public var kind: RenderSectionKind = .restParameters
3131
/// The title for the section.
3232
public let title: String
3333
/// The list of REST parameters.
34-
public let items: [RenderProperty]
34+
public let parameters: [RenderProperty]
3535
/// The kind of listed parameters.
3636
public let source: RESTParameterSource
37-
37+
38+
enum CodingKeys: String, CodingKey {
39+
case kind
40+
case title
41+
case parameters = "items"
42+
case source
43+
}
44+
3845
/// Creates a new REST parameters section.
3946
/// - Parameters:
4047
/// - title: The title for the section.
41-
/// - items: The list of REST parameters.
48+
/// - parameters: The list of REST parameters.
4249
/// - source: The kind of listed parameters.
43-
public init(title: String, items: [RenderProperty], source: RESTParameterSource) {
50+
public init(title: String, parameters: [RenderProperty], source: RESTParameterSource) {
4451
self.title = title
45-
self.items = items
52+
self.parameters = parameters
4653
self.source = source
4754
}
4855
}
@@ -55,7 +62,7 @@ extension RESTParametersRenderSection: RenderJSONDiffable {
5562

5663
diffBuilder.addDifferences(atKeyPath: \.kind, forKey: CodingKeys.kind)
5764
diffBuilder.addDifferences(atKeyPath: \.title, forKey: CodingKeys.title)
58-
diffBuilder.addDifferences(atKeyPath: \.items, forKey: CodingKeys.items)
65+
diffBuilder.addDifferences(atKeyPath: \.parameters, forKey: CodingKeys.parameters)
5966
diffBuilder.addDifferences(atKeyPath: \.source, forKey: CodingKeys.source)
6067

6168
return diffBuilder.differences

Sources/SwiftDocC/Model/Rendering/Symbol/RESTResponseRenderSection.swift

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,26 @@
1111
import Foundation
1212

1313
/// A section that displays a list of REST responses.
14-
struct RESTResponseRenderSection: RenderSection, Equatable {
14+
public struct RESTResponseRenderSection: RenderSection, Equatable {
1515
public var kind: RenderSectionKind = .restResponses
1616
/// The title for the section.
1717
public let title: String
1818
/// The list of possible REST responses.
19-
public let items: [RESTResponse]
20-
19+
public let responses: [RESTResponse]
20+
21+
enum CodingKeys: String, CodingKey {
22+
case kind
23+
case title
24+
case responses = "items"
25+
}
26+
2127
/// Creates a new REST response section.
2228
/// - Parameters:
2329
/// - title: The title for the section.
24-
/// - items: The list of possible REST responses.
25-
public init(title: String, items: [RESTResponse]) {
30+
/// - responses: The list of possible REST responses.
31+
public init(title: String, responses: [RESTResponse]) {
2632
self.title = title
27-
self.items = items
33+
self.responses = responses
2834
}
2935
}
3036

@@ -37,14 +43,14 @@ extension RESTResponseRenderSection: RenderJSONDiffable {
3743

3844
diffBuilder.addDifferences(atKeyPath: \.kind, forKey: CodingKeys.kind)
3945
diffBuilder.addDifferences(atKeyPath: \.title, forKey: CodingKeys.title)
40-
diffBuilder.addDifferences(atKeyPath: \.items, forKey: CodingKeys.items)
46+
diffBuilder.addDifferences(atKeyPath: \.responses, forKey: CodingKeys.responses)
4147

4248
return diffBuilder.differences
4349
}
4450

4551
/// Returns if this RESTResponseRenderSection is similar enough to the given one.
4652
func isSimilar(to other: RESTResponseRenderSection) -> Bool {
47-
return self.title == other.title || self.items == other.items
53+
return self.title == other.title || self.responses == other.responses
4854
}
4955
}
5056

@@ -54,7 +60,7 @@ extension RESTResponseRenderSection: RenderJSONDiffable {
5460
/// If the response is a decodable object, a declaration-style `type` property
5561
/// describes the expected type and can provide an optional link to the expected
5662
/// documentation symbol.
57-
struct RESTResponse: Codable, TextIndexing, Equatable {
63+
public struct RESTResponse: Codable, TextIndexing, Equatable {
5864
/// The HTTP status code for the response.
5965
public let status: UInt
6066
/// An optional plain-text reason for the response.

0 commit comments

Comments
 (0)