You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.4 KiB
64 lines
1.4 KiB
//
|
|
// FileResource.swift
|
|
// R.swift.Library
|
|
//
|
|
// Created by Mathijs Kadijk on 06-01-16.
|
|
// From: https://github.com/mac-cain13/R.swift.Library
|
|
// License: MIT License
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public protocol FileResourceType {
|
|
|
|
/// Bundle this file is in
|
|
var bundle: Bundle { get }
|
|
|
|
/// Name of the file file on disk
|
|
var name: String { get }
|
|
|
|
/// Extension of the file on disk
|
|
var pathExtension: String { get }
|
|
}
|
|
|
|
public extension FileResourceType {
|
|
/// Name of the file on disk with the pathExtension
|
|
var fullName: String {
|
|
return [name, pathExtension].joined(separator: ".")
|
|
}
|
|
|
|
/**
|
|
Returns the full pathname for this resource.
|
|
|
|
- returns: The full pathname for this resource or nil if the file could not be located.
|
|
*/
|
|
func path() -> String? {
|
|
return bundle.path(forResource: self)
|
|
}
|
|
|
|
/**
|
|
Returns the file URL for this resource.
|
|
|
|
- returns: The file URL for this resource or nil if the file could not be located.
|
|
*/
|
|
func url() -> URL? {
|
|
return bundle.url(forResource: self)
|
|
}
|
|
}
|
|
|
|
public struct FileResource: FileResourceType {
|
|
/// Bundle this file is in
|
|
public let bundle: Bundle
|
|
|
|
/// Name of the file on disk, without the pathExtension
|
|
public let name: String
|
|
|
|
/// Extension of the file on disk
|
|
public let pathExtension: String
|
|
|
|
public init(bundle: Bundle, name: String, pathExtension: String) {
|
|
self.bundle = bundle
|
|
self.name = name
|
|
self.pathExtension = pathExtension
|
|
}
|
|
}
|