[Context] Convenience push with block function

This commit is contained in:
Kyle Fuller
2015-10-24 17:27:02 -07:00
parent 19366ec71b
commit 9b26b7d71a
2 changed files with 20 additions and 0 deletions

View File

@@ -42,4 +42,12 @@ public class Context {
public func pop() -> [String: Any]? {
return dictionaries.popLast()
}
/// Push a new level onto the context for the duration of the execution of the given closure
public func push<Result>(dictionary: [String: Any]? = nil, @noescape closure: (() throws -> Result)) rethrows -> Result {
push(dictionary)
let result = try closure()
pop()
return result
}
}