Don't log files that dont load throw error instead
remove swift-log dependency
This commit is contained in:
@@ -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"]),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user