Implemented the Resource model in the library target.

This commit is contained in:
2025-09-29 18:18:20 +02:00
parent 27d1d3b59f
commit 480cd657c9
4 changed files with 206 additions and 0 deletions
@@ -0,0 +1,55 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Hummingbird DocC Middleware open source project
//
// Copyright (c) 2025 Röck+Cöde VoF. and the Hummingbird DocC Middleware project authors
// Licensed under the EUPL 1.2 or later.
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Hummingbird DocC Middleware project authors
//
// ===----------------------------------------------------------------------===
/// A model that encapsulates the information related to a resource in a given `DocC` documentation archive.
struct Resource {
// MARK: Properties
/// An archive name in which the resource belongs to.
let archiveName: String
/// A relative URI path to the resource.
let relativePath: String
// MARK: Initializers
/// Initializes this resource.
/// - Parameters:
/// - archiveName: An archive name in which the resource belongs to.
/// - relativePath: A relative URI path to the resource.
init(
archiveName: String,
relativePath: String
) {
self.archiveName = archiveName
self.relativePath = relativePath
}
// MARK: Computed
/// A relative URI path to a documentation archive the resource belongs to.
lazy var archivePath: String = {
.init(format: .Format.Path.archive, archiveName)
}()
/// A reference name for the documentation archive the resource belongs to.
lazy var archiveReference: String = {
archiveName.lowercased()
}()
/// A relative URI path to the resource in its documentation archive.
lazy var fullPath: String = {
.init(format: .Format.Path.archive, archiveName, relativePath)
}()
}