Files
swiftpm-stencil/Sources/NowTag.swift
Ilya Puchka d9f6a82f97 Convert Token from enum to struct (#256)
* convert Token from enum to struct

* private setter for components

* updated CHANGELOG
2018-09-30 21:48:44 +01:00

46 lines
1.1 KiB
Swift

#if !os(Linux)
import Foundation
class NowNode : NodeType {
let format:Variable
let token: Token?
class func parse(_ parser:TokenParser, token:Token) throws -> NodeType {
var format:Variable?
let components = token.components
guard components.count <= 2 else {
throw TemplateSyntaxError("'now' tags may only have one argument: the format string.")
}
if components.count == 2 {
format = Variable(components[1])
}
return NowNode(format:format, token: token)
}
init(format:Variable?, token: Token? = nil) {
self.format = format ?? Variable("\"yyyy-MM-dd 'at' HH:mm\"")
self.token = token
}
func render(_ context: Context) throws -> String {
let date = Date()
let format = try self.format.resolve(context)
var formatter:DateFormatter?
if let format = format as? DateFormatter {
formatter = format
} else if let format = format as? String {
formatter = DateFormatter()
formatter!.dateFormat = format
} else {
return ""
}
return formatter!.string(from: date)
}
}
#endif