From 1c40e4982545fd6132293a7af4018e118c73394d Mon Sep 17 00:00:00 2001 From: Justin Hileman Date: Tue, 30 Mar 2010 14:03:16 -0400 Subject: [PATCH] Added default template name based on underscorified class name. I.e. a class named FooBarBaz would try to load a template named foo_bar_baz.mustache in the current directory. --- HandlebarMustache.php | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/HandlebarMustache.php b/HandlebarMustache.php index 0484375..489a20a 100644 --- a/HandlebarMustache.php +++ b/HandlebarMustache.php @@ -20,6 +20,16 @@ class HandlebarMustache extends Mustache { */ protected $templateBase; + /** + * templateName. + * + * If none is specified, this will default to an underscorified version of the class name. + * + * @var string + * @access protected + */ + protected $templateName; + /** * HandlebarMustache class constructor. * @@ -36,6 +46,11 @@ class HandlebarMustache extends Mustache { if (!isset($this->templateBase)) { $this->setTemplateBase(dirname(__FILE__)); } + + // default template name is the underscorified class name. + if (!isset($this->templateName)) { + $this->templateName = strtolower(preg_replace('#(?templateBase = $dir; } + /** + * Override the default templateName. + * + * @access public + * @param string $name + * @return void + */ + public function setTemplateName($name) { + $this->templateName = $name; + } + /** * Load a template file. This file will be relative to $this->templateBase. * A '.mustache' file extension is assumed if none is provided in $file. @@ -108,4 +134,24 @@ class HandlebarMustache extends Mustache { } } } + + /** + * Render the given template and view object. + * + * Defaults to the template and view passed to the class constructor unless a new one is provided. + * Optionally, pass an associative array of partials as well. + * + * @access public + * @param string $template (default: null) + * @param mixed $view (default: null) + * @param array $partials (default: null) + * @return string Rendered Mustache template. + */ + public function render($template = null, $view = null, $partials = null) { + if ($template === null && !isset($this->template)) { + $this->loadTemplate($this->templateName); + } + + return parent::render($template, $view, $partials); + } } \ No newline at end of file