Support loading a template from disk

Closes #4
This commit is contained in:
Kyle Fuller
2014-10-25 15:45:57 +01:00
parent 455845d80c
commit 758bf352c1
2 changed files with 25 additions and 3 deletions

View File

@@ -22,11 +22,11 @@ let context = Context(dictionary: [
]
])
let template = Template(path:"template.stencil")
let template = Template(named: "template.stencil")
let result = template.render(context)
if let error = result.error {
println("There was a syntax error parsing your template (\(error)).")
println("There was an error rendering your template (\(error)).")
}
println("\(result.string)")

View File

@@ -8,9 +8,31 @@
import Foundation
public struct Template {
public class Template {
let nodes:[Node]
public convenience init(named:String) {
self.init(named:named, inBundle:nil)
}
public convenience init(named:String, inBundle bundle:NSBundle?) {
var url:NSURL?
if let bundle = bundle {
url = bundle.URLForResource(named, withExtension: nil)
} else {
url = NSBundle.mainBundle().URLForResource(named, withExtension: nil)
}
self.init(URL:url!)
}
public convenience init(URL:NSURL) {
var error:NSError?
let templateString = NSString.stringWithContentsOfURL(URL, encoding: NSUTF8StringEncoding, error: &error)
self.init(templateString:templateString)
}
public init(templateString:String) {
let lexer = Lexer(templateString: templateString)
let tokens = lexer.tokenize()