null values can shadow parent context now. Improve test a little.
This commit is contained in:
@@ -37,7 +37,11 @@ public class BasicCollector implements Mustache.Collector
|
|||||||
|
|
||||||
protected static final Mustache.VariableFetcher MAP_FETCHER = new Mustache.VariableFetcher() {
|
protected static final Mustache.VariableFetcher MAP_FETCHER = new Mustache.VariableFetcher() {
|
||||||
public Object get (Object ctx, String name) throws Exception {
|
public Object get (Object ctx, String name) throws Exception {
|
||||||
return ((Map<?,?>)ctx).get(name);
|
if (((Map<?,?>)ctx).containsKey(name)) {
|
||||||
|
return ((Map<?,?>)ctx).get(name);
|
||||||
|
} else {
|
||||||
|
return Template.NO_FETCHER_FOUND;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -140,10 +140,6 @@ public class Template
|
|||||||
Object value = getValueIn(ctx.data, name, line);
|
Object value = getValueIn(ctx.data, name, line);
|
||||||
if (value == NO_FETCHER_FOUND) {
|
if (value == NO_FETCHER_FOUND) {
|
||||||
// preserve variableMissing
|
// preserve variableMissing
|
||||||
} else if (value == null) {
|
|
||||||
// we found a fetcher, and it returned null; so we keep searching our parents, but
|
|
||||||
// we won't freak out about a missing variable if we have a nullValue configured
|
|
||||||
variableMissing = false;
|
|
||||||
} else {
|
} else {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -357,7 +357,8 @@ public class MustacheTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test public void testShadowedContextWithNull () {
|
@Test public void testShadowedContextWithNull () {
|
||||||
test("outer", "{{foo}}{{#inner}}{{foo}}{{/inner}}",
|
test(Mustache.compiler().nullValue("(null)"),
|
||||||
|
"outer(null)", "{{foo}}{{#inner}}{{foo}}{{/inner}}",
|
||||||
context("foo", "outer", "inner", context("foo", null))
|
context("foo", "outer", "inner", context("foo", null))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user