-
Notifications
You must be signed in to change notification settings - Fork 140
/
Copy pathFeatureFlags.swift
72 lines (58 loc) · 3.52 KB
/
FeatureFlags.swift
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
This source file is part of the Swift.org open source project
Copyright (c) 2021-2022 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
*/
/// A set of feature flags that conditionally enable (usually experimental) behavior in Swift-DocC.
public struct FeatureFlags: Codable {
/// The current feature flags that Swift-DocC uses to conditionally enable
/// (usually experimental) behavior in Swift-DocC.
public static var current = FeatureFlags()
/// Whether or not experimental support for device frames on images and video is enabled.
public var isExperimentalDeviceFrameSupportEnabled = false
/// Whether or not support for emitting a serialized version of the local link resolution information is enabled.
public var isLinkHierarchySerializationEnabled = true
@available(*, deprecated, renamed: "isLinkHierarchySerializationEnabled", message: "Use 'isLinkHierarchySerializationEnabled' instead. This deprecated API will be removed after 6.2 is released")
public var isExperimentalLinkHierarchySerializationEnabled: Bool {
get { isLinkHierarchySerializationEnabled }
set { isLinkHierarchySerializationEnabled = newValue }
}
/// Whether or not experimental support for combining overloaded symbol pages is enabled.
public var isExperimentalOverloadedSymbolPresentationEnabled = false
/// Whether support for automatically rendering links on symbol documentation to articles that mention that symbol is enabled.
public var isMentionedInEnabled = true
@available(*, deprecated, renamed: "isMentionedInEnabled", message: "Use 'isMentionedInEnabled' instead. This deprecated API will be removed after 6.2 is released")
public var isExperimentalMentionedInEnabled: Bool {
get { isMentionedInEnabled }
set { isMentionedInEnabled = newValue }
}
/// Whether or not support for validating parameters and return value documentation is enabled.
public var isParametersAndReturnsValidationEnabled = true
@available(*, deprecated, renamed: "isParametersAndReturnsValidationEnabled", message: "Use 'isParametersAndReturnsValidationEnabled' instead. This deprecated API will be removed after 6.1 is released")
public var isExperimentalParametersAndReturnsValidationEnabled: Bool {
get { isParametersAndReturnsValidationEnabled }
set { isParametersAndReturnsValidationEnabled = newValue }
}
/// Creates a set of feature flags with all default values.
public init() {}
/// Creates a set of feature flags with the given values.
///
/// - Parameters:
/// - additionalFlags: Any additional flags to set.
///
/// This field allows clients to set feature flags without adding new API.
@available(*, deprecated, renamed: "init()", message: "Use 'init()' instead. This deprecated API will be removed after 6.2 is released")
@_disfavoredOverload
public init(
additionalFlags: [String : Bool] = [:]
) {
}
/// Set feature flags that were loaded from a bundle's Info.plist.
internal mutating func loadFlagsFromBundle(_ bundleFlags: DocumentationBundle.Info.BundleFeatureFlags) {
if let overloadsPresentation = bundleFlags.experimentalOverloadedSymbolPresentation {
self.isExperimentalOverloadedSymbolPresentationEnabled = overloadsPresentation
}
}
}