Fix issues in Sources

Sources

sources
This commit is contained in:
David Jennes
2018-09-20 05:10:18 +02:00
parent 799490198f
commit 3f4622f54f
21 changed files with 346 additions and 350 deletions

View File

@@ -2,26 +2,27 @@ import Foundation
public protocol NodeType {
/// Render the node in the given context
func render(_ context:Context) throws -> String
func render(_ context: Context) throws -> String
/// Reference to this node's token
var token: Token? { get }
}
/// Render the collection of nodes in the given context
public func renderNodes(_ nodes:[NodeType], _ context:Context) throws -> String {
return try nodes.map {
do {
return try $0.render(context)
} catch {
throw error.withToken($0.token)
public func renderNodes(_ nodes: [NodeType], _ context: Context) throws -> String {
return try nodes
.map {
do {
return try $0.render(context)
} catch {
throw error.withToken($0.token)
}
}
}.joined(separator: "")
.joined()
}
public class SimpleNode : NodeType {
public let handler:(Context) throws -> String
public class SimpleNode: NodeType {
public let handler: (Context) throws -> String
public let token: Token?
public init(token: Token, handler: @escaping (Context) throws -> String) {
@@ -34,34 +35,31 @@ public class SimpleNode : NodeType {
}
}
public class TextNode : NodeType {
public let text:String
public class TextNode: NodeType {
public let text: String
public let token: Token?
public init(text:String) {
public init(text: String) {
self.text = text
self.token = nil
}
public func render(_ context:Context) throws -> String {
public func render(_ context: Context) throws -> String {
return self.text
}
}
public protocol Resolvable {
func resolve(_ context: Context) throws -> Any?
}
public class VariableNode : NodeType {
public class VariableNode: NodeType {
public let variable: Resolvable
public var token: Token?
let condition: Expression?
let elseExpression: Resolvable?
class func parse(_ parser:TokenParser, token:Token) throws -> NodeType {
class func parse(_ parser: TokenParser, token: Token) throws -> NodeType {
var components = token.components
func hasToken(_ token: String, at index: Int) -> Bool {
@@ -121,7 +119,6 @@ public class VariableNode : NodeType {
}
}
func stringify(_ result: Any?) -> String {
if let result = result as? String {
return result
@@ -144,7 +141,6 @@ func unwrap(_ array: [Any?]) -> [Any] {
} else {
return item
}
}
else { return item as Any }
} else { return item as Any }
}
}