fix for using {{.}} in non-standards mode

in non-standards mode (which is the default), {{.}} would be treated as a compound key, resulting in key not found exceptions.
This commit is contained in:
Sean Scanlon
2011-03-27 16:07:20 -07:00
parent 5fc751219e
commit 095c6f9a59
2 changed files with 5 additions and 1 deletions
@@ -80,7 +80,8 @@ public class Template
if (!_compiler.standardsMode) { if (!_compiler.standardsMode) {
// if we're dealing with a compound key, resolve each component and use the result to // if we're dealing with a compound key, resolve each component and use the result to
// resolve the subsequent component and so forth // resolve the subsequent component and so forth
if (name.indexOf(".") != -1) {
if (name.indexOf(DOT_NAME) > 0) {
String[] comps = name.split("\\."); String[] comps = name.split("\\.");
// we want to allow the first component of a compound key to be located in a parent // we want to allow the first component of a compound key to be located in a parent
// context, but once we're selecting sub-components, they must only be resolved in the // context, but once we're selecting sub-components, they must only be resolved in the
@@ -169,11 +169,14 @@ public class MustacheTest
@Test public void testTopLevelThis () { @Test public void testTopLevelThis () {
assertEquals("bar", Mustache.compiler().compile("{{this}}").execute("bar")); assertEquals("bar", Mustache.compiler().compile("{{this}}").execute("bar"));
assertEquals("bar", Mustache.compiler().compile("{{.}}").execute("bar"));
} }
@Test public void testNestedThis () { @Test public void testNestedThis () {
assertEquals("barbazbif", Mustache.compiler().compile("{{#things}}{{this}}{{/things}}"). assertEquals("barbazbif", Mustache.compiler().compile("{{#things}}{{this}}{{/things}}").
execute(context("things", Arrays.asList("bar", "baz", "bif")))); execute(context("things", Arrays.asList("bar", "baz", "bif"))));
assertEquals("barbazbif", Mustache.compiler().compile("{{#things}}{{.}}{{/things}}").
execute(context("things", Arrays.asList("bar", "baz", "bif"))));
} }
@Test public void testStructuredVariable () { @Test public void testStructuredVariable () {