diff --git a/TraversableMustache.php b/TraversableMustache.php new file mode 100644 index 0000000..a898740 --- /dev/null +++ b/TraversableMustache.php @@ -0,0 +1,49 @@ + array( + * 'three' => 'wheee!' + * ) + * ); + * + * protected $template = '{{one.two.three}}'; + * } + * $foo = new Foo; + * print $foo; + * @endcode + * + * (The above code prints 'wheee!') + * + * @extends Mustache + */ +class TraversableMustache extends Mustache { + + /** + * Override default getVariable method to allow object traversal via dots. + * This might be cool. Also, might be heinous. + * + * @access protected + * @param string $tag_name + * @param array &$context + * @return string + */ + protected function getVariable($tag_name, &$context) { + $chunks = explode('.', $tag_name); + $first = array_shift($chunks); + + $ret = parent::getVariable($first, $context); + while ($next = array_shift($chunks)) { + $c = array($ret); + $ret = parent::getVariable($next, $c); + } + + return $ret; + } +} \ No newline at end of file