Created
March 4, 2017 15:08
-
-
Save naithar/dc184031faa8de19f2892525f07f261c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Stencil | |
let text = "{% exact %} {{aaa}} {% endexact %}" | |
let ext = Extension() | |
class ExactNode: NodeType { | |
let string: String | |
init(_ string: String) { | |
self.string = string | |
} | |
func render(_ context:Context) throws -> String { | |
return self.string | |
} | |
class func parse(_ parser: TokenParser) -> ExactNode { | |
var string = "" | |
loop: while let token = parser.nextToken() { | |
switch token { | |
case .block(value: "endexact"): | |
break loop | |
case .block(value: let value): | |
string += "{%" + value + "%}" | |
case .text(value: let value): | |
string += value | |
case .variable(value: let value): | |
string += "{{" + value + "}}" | |
default: | |
break | |
} | |
} | |
return ExactNode(string) | |
} | |
} | |
ext.registerTag("exact") { parser, token in | |
print(token) | |
return ExactNode.parse(parser) | |
} | |
let e = Environment(extensions: [ext]) | |
print(try e.renderTemplate(string: text, context: ["aaa" : 10])) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment