File: DocumentationBundleFileTypes.swift

package info (click to toggle)
swiftlang 6.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,856,264 kB
  • sloc: cpp: 9,995,718; ansic: 2,234,019; asm: 1,092,167; python: 313,940; objc: 82,726; f90: 80,126; lisp: 38,373; pascal: 25,580; sh: 20,378; ml: 5,058; perl: 4,751; makefile: 4,725; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (87 lines) | stat: -rw-r--r-- 3,926 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
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
 This source file is part of the Swift.org open source project

 Copyright (c) 2021-2025 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
*/

public import Foundation

/// A collection of functions to check if a file is one of the documentation bundle files types.
public enum DocumentationBundleFileTypes {
    
    static let referenceFileExtension = "md"
    /// Checks if a file is a reference documentation file.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is a reference documentation file.
    public static func isReferenceDocumentationFile(_ url: URL) -> Bool {
        return url.pathExtension.lowercased() == referenceFileExtension
    }
    
    static let tutorialFileExtension = "tutorial"
    /// Checks if a file is a tutorial file.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is a tutorial file.
    public static func isTutorialFile(_ url: URL) -> Bool {
        return url.pathExtension.lowercased() == tutorialFileExtension
    }
    
    private static let markupFileExtensions: Set = [referenceFileExtension, tutorialFileExtension]
    /// Checks if a file is a markup file; that is, either a reference documentation file or a tutorial file.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is a markup file.
    public static func isMarkupFile(_ url: URL) -> Bool {
        return markupFileExtensions.contains(url.pathExtension.lowercased())
    }
    
    private static let symbolGraphFileExtension = ".symbols.json"
    /// Checks if a file is a symbol graph file.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is a symbol graph file.
    public static func isSymbolGraphFile(_ url: URL) -> Bool {
        return url.lastPathComponent.hasSuffix(symbolGraphFileExtension)
    }
    
    private static let documentationCatalogFileExtension = "docc"
    /// Checks if a folder is a documentation catalog.
    /// - Parameter url: The folder to check.
    /// - Returns: Whether or not the folder at `url` is a documentation catalog.
    public static func isDocumentationCatalog(_ url: URL) -> Bool {
        url.pathExtension.lowercased() == documentationCatalogFileExtension
    }
    
    private static let infoPlistFileName = "Info.plist"
    /// Checks if a file is an Info.plist file.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is an Info.plist file.
    public static func isInfoPlistFile(_ url: URL) -> Bool {
        return url.lastPathComponent == infoPlistFileName
    }

    private static let customHeaderFileName = "header.html"
    /// Checks if a file is a custom header.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is a custom header.
    public static func isCustomHeader(_ url: URL) -> Bool {
        return url.lastPathComponent == customHeaderFileName
    }

    private static let customFooterFileName = "footer.html"
    /// Checks if a file is a custom footer.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is a custom footer.
    public static func isCustomFooter(_ url: URL) -> Bool {
        return url.lastPathComponent == customFooterFileName
    }

    private static let themeSettingsFileName = "theme-settings.json"
    /// Checks if a file is `theme-settings.json`.
    /// - Parameter url: The file to check.
    /// - Returns: Whether or not the file at `url` is `theme-settings.json`.
    public static func isThemeSettingsFile(_ url: URL) -> Bool {
        return url.lastPathComponent == themeSettingsFileName
    }
}