From 122dc25ce6d0e0a9196e257451bf18096b1d6690 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Tue, 14 May 2019 21:45:41 -0700 Subject: [PATCH] Add a new filter to output a unicode codepoint --- Sources/StencilSwiftKit/Environment.swift | 1 + Sources/StencilSwiftKit/Filters+Strings.swift | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/Sources/StencilSwiftKit/Environment.swift b/Sources/StencilSwiftKit/Environment.swift index d73127ee..00bafd25 100644 --- a/Sources/StencilSwiftKit/Environment.swift +++ b/Sources/StencilSwiftKit/Environment.swift @@ -42,6 +42,7 @@ public extension Extension { registerFilter("snakeToCamelCase", filter: Filters.Strings.snakeToCamelCase) registerFilter("swiftIdentifier", filter: Filters.Strings.swiftIdentifier) registerFilter("titlecase", filter: Filters.Strings.upperFirstLetter) + registerFilter("unicodeCase", filter: Filters.Strings.unicodeCase) registerFilter("upperFirstLetter", filter: Filters.Strings.upperFirstLetter) registerFilter("contains", filter: Filters.Strings.contains) registerFilter("hasPrefix", filter: Filters.Strings.hasPrefix) diff --git a/Sources/StencilSwiftKit/Filters+Strings.swift b/Sources/StencilSwiftKit/Filters+Strings.swift index fde13126..b9a50e26 100644 --- a/Sources/StencilSwiftKit/Filters+Strings.swift +++ b/Sources/StencilSwiftKit/Filters+Strings.swift @@ -179,6 +179,14 @@ extension Filters.Strings { return result } + static func unicodeCase(value: Any?) throws -> Any? { + guard let string = value as? String else { throw Filters.Error.invalidInputType } + let escapingCharacterSet = CharacterSet(charactersIn: "\\") + let unicode = string.trimmingCharacters(in: escapingCharacterSet) + + return "\\u{" + unicode + "}" + } + // MARK: Private private static func containsAnyLowercasedChar(_ string: String) throws -> Bool {