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 |
|
} |
|
}
|
|
|