Don't log files that dont load throw error instead

remove swift-log dependency
This commit is contained in:
Adam Fowler
2021-03-18 15:25:46 +00:00
parent 4af21bb4cf
commit aa30dcbddf
4 changed files with 15 additions and 14 deletions

View File

@@ -8,13 +8,9 @@ let package = Package(
products: [ products: [
.library(name: "HummingbirdMustache", targets: ["HummingbirdMustache"]), .library(name: "HummingbirdMustache", targets: ["HummingbirdMustache"]),
], ],
dependencies: [ dependencies: [],
.package(url: "https://github.com/apple/swift-log.git", from: "1.4.0"),
],
targets: [ targets: [
.target(name: "HummingbirdMustache", dependencies: [ .target(name: "HummingbirdMustache", dependencies: []),
.product(name: "Logging", package: "swift-log"),
]),
.testTarget(name: "HummingbirdMustacheTests", dependencies: ["HummingbirdMustache"]), .testTarget(name: "HummingbirdMustacheTests", dependencies: ["HummingbirdMustache"]),
] ]
) )

View File

@@ -3,7 +3,7 @@ import Logging
extension HBMustacheLibrary { extension HBMustacheLibrary {
/// Load templates from a folder /// Load templates from a folder
func loadTemplates(from directory: String, withExtension extension: String = "mustache", logger: Logger?) { func loadTemplates(from directory: String, withExtension extension: String = "mustache") throws {
var directory = directory var directory = directory
if !directory.hasSuffix("/") { if !directory.hasSuffix("/") {
directory += "/" directory += "/"
@@ -15,11 +15,12 @@ extension HBMustacheLibrary {
guard path.hasSuffix(extWithDot) else { continue } guard path.hasSuffix(extWithDot) else { continue }
guard let data = fs.contents(atPath: directory + path) else { continue } guard let data = fs.contents(atPath: directory + path) else { continue }
let string = String(decoding: data, as: Unicode.UTF8.self) let string = String(decoding: data, as: Unicode.UTF8.self)
guard let template = try? HBMustacheTemplate(string: string) else { let template: HBMustacheTemplate
logger?.error("Failed to load \(path)") do {
continue template = try HBMustacheTemplate(string: string)
} catch {
throw Error.failedToLoad(path, error)
} }
logger?.debug("Loading \(path)")
// drop ".mustache" from path to get name // drop ".mustache" from path to get name
let name = String(path.dropLast(extWithDot.count)) let name = String(path.dropLast(extWithDot.count))
register(template, named: name) register(template, named: name)

View File

@@ -18,9 +18,9 @@ public final class HBMustacheLibrary {
/// the folder is recursive and templates in subfolders will be registered with the name `subfolder/template`. /// the folder is recursive and templates in subfolders will be registered with the name `subfolder/template`.
/// - Parameter directory: Directory to look for mustache templates /// - Parameter directory: Directory to look for mustache templates
/// - Parameter extension: Extension of files to look for /// - Parameter extension: Extension of files to look for
public init(directory: String, withExtension extension: String = "mustache", logger: Logger? = nil) { public init(directory: String, withExtension extension: String = "mustache") throws {
templates = [:] templates = [:]
loadTemplates(from: directory, withExtension: `extension`, logger: logger) try loadTemplates(from: directory, withExtension: `extension`)
} }
/// Register template under name /// Register template under name
@@ -49,5 +49,9 @@ public final class HBMustacheLibrary {
return template.render(object) return template.render(object)
} }
public enum Error: Swift.Error {
case failedToLoad(String, Swift.Error)
}
private var templates: [String: HBMustacheTemplate] private var templates: [String: HBMustacheTemplate]
} }

View File

@@ -11,7 +11,7 @@ final class LibraryTests: XCTestCase {
try data.write(to: URL(fileURLWithPath: "templates/test.mustache")) try data.write(to: URL(fileURLWithPath: "templates/test.mustache"))
defer { XCTAssertNoThrow(try fs.removeItem(atPath: "templates/test.mustache")) } defer { XCTAssertNoThrow(try fs.removeItem(atPath: "templates/test.mustache")) }
let library = HBMustacheLibrary(directory: "./templates") let library = try HBMustacheLibrary(directory: "./templates")
let object = ["value": ["value1", "value2"]] let object = ["value": ["value1", "value2"]]
XCTAssertEqual(library.render(object, withTemplate: "test"), "<test><value>value1</value><value>value2</value></test>") XCTAssertEqual(library.render(object, withTemplate: "test"), "<test><value>value1</value><value>value2</value></test>")
} }