diff --git a/Sources/Filters.swift b/Sources/Filters.swift index 9b7cb24..dd78ff4 100644 --- a/Sources/Filters.swift +++ b/Sources/Filters.swift @@ -1,35 +1,13 @@ -func toString(_ value: Any?) -> String? { - if let value = value as? String { - return value - } else if let value = value as? CustomStringConvertible { - return value.description - } - - return nil -} - func capitalise(_ value: Any?) -> Any? { - if let value = toString(value) { - return value.capitalized - } - - return value + return stringify(value).capitalized } func uppercase(_ value: Any?) -> Any? { - if let value = toString(value) { - return value.uppercased() - } - - return value + return stringify(value).uppercased() } func lowercase(_ value: Any?) -> Any? { - if let value = toString(value) { - return value.lowercased() - } - - return value + return stringify(value).lowercased() } func defaultFilter(value: Any?, arguments: [Any?]) -> Any? { diff --git a/Sources/Node.swift b/Sources/Node.swift index 781fd3b..5b47177 100644 --- a/Sources/Node.swift +++ b/Sources/Node.swift @@ -70,15 +70,19 @@ public class VariableNode : NodeType { public func render(_ context: Context) throws -> String { let result = try variable.resolve(context) - - if let result = result as? String { - return result - } else if let result = result as? CustomStringConvertible { - return result.description - } else if let result = result as? NSObject { - return result.description - } - - return "" + return stringify(result) } } + + +func stringify(_ result: Any?) -> String { + if let result = result as? String { + return result + } else if let result = result as? CustomStringConvertible { + return result.description + } else if let result = result as? NSObject { + return result.description + } + + return "" +}