fix(context): Allow removing a value at a pushed state

This commit is contained in:
Kyle Fuller
2016-11-28 05:54:08 +00:00
parent 1975cfd627
commit 9af9cf4005
2 changed files with 13 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
/// A container for template variables. /// A container for template variables.
public class Context { public class Context {
var dictionaries: [[String: Any]] var dictionaries: [[String: Any?]]
let namespace: Namespace let namespace: Namespace
/// Initialise a Context with an optional dictionary and optional namespace /// Initialise a Context with an optional dictionary and optional namespace
@@ -58,7 +58,9 @@ public class Context {
for dictionary in dictionaries { for dictionary in dictionaries {
for (key, value) in dictionary { for (key, value) in dictionary {
accumulator.updateValue(value, forKey: key) if let value = value {
accumulator.updateValue(value, forKey: key)
}
} }
} }

View File

@@ -47,6 +47,15 @@ func testContext() {
try expect(context["name"] as? String) == "Kyle" try expect(context["name"] as? String) == "Kyle"
} }
$0.it("allows you to remove a parent's value in a level") {
try context.push {
context["name"] = nil
try expect(context["name"]).to.beNil()
}
try expect(context["name"] as? String) == "Kyle"
}
$0.it("allows you to push a dictionary and run a closure then restoring previous state") { $0.it("allows you to push a dictionary and run a closure then restoring previous state") {
var didRun = false var didRun = false