Add architecture document and docs

This commit is contained in:
Kyle Fuller
2014-11-30 00:04:17 +00:00
parent 017692a0dc
commit 5d61043f8c
9 changed files with 209 additions and 0 deletions

View File

@@ -1,12 +1,15 @@
import Foundation
/// A class representing a template
public class Template {
public let parser:TokenParser
/// Create a template with the given name inside the main bundle
public convenience init?(named:String) {
self.init(named:named, inBundle:nil)
}
/// Create a template with the given name inside the given bundle
public convenience init?(named:String, inBundle bundle:NSBundle?) {
var url:NSURL?
@@ -19,6 +22,7 @@ public class Template {
self.init(URL:url!)
}
/// Create a template with a file found at the given URL
public convenience init?(URL:NSURL) {
var error:NSError?
let maybeTemplateString = NSString(contentsOfURL: URL, encoding: NSUTF8StringEncoding, error: &error)
@@ -30,12 +34,14 @@ public class Template {
}
}
/// Create a template with a template string
public init(templateString:String) {
let lexer = Lexer(templateString: templateString)
let tokens = lexer.tokenize()
parser = TokenParser(tokens: tokens)
}
/// Render the given template in a context
public func render(context:Context) -> Result {
switch parser.parse() {
case .Success(let nodes):
@@ -46,6 +52,7 @@ public class Template {
}
}
/// Render the given template without a context
public func render() -> Result {
let context = Context()
return render(context)