File: DocumentationBundleFileTypes.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 (87 lines) | stat: -rw-r--r-- 3,916 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 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 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 documentationBundleFileExtension = "docc"
    /// Checks if a folder is a documentation bundle.
    /// - Parameter url: The folder to check.
    /// - Returns: Whether or not the folder at `url` is a documentation bundle.
    public static func isDocumentationBundle(_ url: URL) -> Bool {
        return url.pathExtension.lowercased() == documentationBundleFileExtension
    }
    
    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
    }
}