From c65a7956c8db0b8fddacc2f7b23283c47623cc52 Mon Sep 17 00:00:00 2001 From: Adam Fowler Date: Mon, 3 May 2021 16:55:10 +0100 Subject: [PATCH] Custom renderable fixups (#13) * Mark HBMustacheCustomRenderable public * Add HBMustacheCustomRenderable tests * swift format --- .../CustomRenderable.swift | 2 +- .../TemplateRendererTests.swift | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Sources/HummingbirdMustache/CustomRenderable.swift b/Sources/HummingbirdMustache/CustomRenderable.swift index 30f9f16..b409f9b 100644 --- a/Sources/HummingbirdMustache/CustomRenderable.swift +++ b/Sources/HummingbirdMustache/CustomRenderable.swift @@ -14,7 +14,7 @@ import Foundation -protocol HBMustacheCustomRenderable { +public protocol HBMustacheCustomRenderable { var renderText: String { get } var isNull: Bool { get } } diff --git a/Tests/HummingbirdMustacheTests/TemplateRendererTests.swift b/Tests/HummingbirdMustacheTests/TemplateRendererTests.swift index 90792fa..c181361 100644 --- a/Tests/HummingbirdMustacheTests/TemplateRendererTests.swift +++ b/Tests/HummingbirdMustacheTests/TemplateRendererTests.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -@testable import HummingbirdMustache +import HummingbirdMustache import XCTest final class TemplateRendererTests: XCTestCase { @@ -245,6 +245,26 @@ final class TemplateRendererTests: XCTestCase { """) } + /// test HBMustacheCustomRenderable + func testCustomRenderable() throws { + let template = try HBMustacheTemplate(string: "{{.}}") + let template1 = try HBMustacheTemplate(string: "{{#.}}not null{{/.}}") + let template2 = try HBMustacheTemplate(string: "{{^.}}null{{/.}}") + struct Object: HBMustacheCustomRenderable { + let value: String + + var renderText: String { self.value.uppercased() } + var isNull: Bool { self.value == "null" } + } + let testObject = Object(value: "test") + let nullObject = Object(value: "null") + XCTAssertEqual(template.render(testObject), "TEST") + XCTAssertEqual(template1.render(testObject), "not null") + XCTAssertEqual(template1.render(nullObject), "") + XCTAssertEqual(template2.render(testObject), "") + XCTAssertEqual(template2.render(nullObject), "null") + } + func testPerformance() throws { let template = try HBMustacheTemplate(string: """ {{#repo}}