fix(join): Dont force strings

This commit is contained in:
Kyle Fuller
2016-12-08 15:56:29 +00:00
parent 2331b11a52
commit 8f6b403aa9
3 changed files with 28 additions and 11 deletions

View File

@@ -47,17 +47,17 @@ func defaultFilter(value: Any?, arguments: [Any?]) -> Any? {
}
func joinFilter(value: Any?, arguments: [Any?]) throws -> Any? {
guard arguments.count == 1 else {
guard arguments.count < 2 else {
throw TemplateSyntaxError("'join' filter takes a single argument")
}
guard let separator = arguments.first as? String else {
throw TemplateSyntaxError("'join' filter takes a separator as string")
let separator = stringify(arguments.first ?? "")
if let value = value as? [Any] {
return value
.map(stringify)
.joined(separator: separator)
}
if let value = value as? [String] {
return value.joined(separator: separator)
}
return nil
return value
}