From 2331b11a5299fa0e725b03ee7e5b33bb804c7e50 Mon Sep 17 00:00:00 2001 From: Kyle Fuller Date: Wed, 7 Dec 2016 22:32:31 +0000 Subject: [PATCH] fix: Allow overriding default filters/tags --- Sources/Environment.swift | 2 +- Tests/StencilTests/FilterSpec.swift | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Sources/Environment.swift b/Sources/Environment.swift index 7473fc3..d220bf8 100644 --- a/Sources/Environment.swift +++ b/Sources/Environment.swift @@ -7,7 +7,7 @@ public struct Environment { public init(loader: Loader? = nil, extensions: [Extension]? = nil, templateClass: Template.Type = Template.self) { self.templateClass = templateClass self.loader = loader - self.extensions = [DefaultExtension()] + (extensions ?? []) + self.extensions = (extensions ?? []) + [DefaultExtension()] } public func loadTemplate(name: String) throws -> Template { diff --git a/Tests/StencilTests/FilterSpec.swift b/Tests/StencilTests/FilterSpec.swift index 0422a8b..cc6e4fc 100644 --- a/Tests/StencilTests/FilterSpec.swift +++ b/Tests/StencilTests/FilterSpec.swift @@ -49,6 +49,18 @@ func testFilter() { try expect(try template.render(context)).toThrow(TemplateSyntaxError("No Repeat")) } + $0.it("allows you to override a default filter") { + let template = Template(templateString: "{{ name|join }}") + + let repeatExtension = Extension() + repeatExtension.registerFilter("join") { (value: Any?) in + return "joined" + } + + let result = try template.render(Context(dictionary: context, environment: Environment(extensions: [repeatExtension]))) + try expect(result) == "joined" + } + $0.it("allows whitespace in expression") { let template = Template(templateString: "{{ name | uppercase }}") let result = try template.render(Context(dictionary: ["name": "kyle"]))