diff --git a/HandlebarMustache.php b/HandlebarMustache.php new file mode 100644 index 0000000..8382a1e --- /dev/null +++ b/HandlebarMustache.php @@ -0,0 +1,111 @@ +templateBase)) { + $this->setTemplateBase(dirname(__FILE__)); + } + } + + /** + * Override the current templateBase. + * + * @access public + * @param string $dir + * @return void + */ + public function setTemplateBase($dir) { + if (substr($dir, -1) !== '/') { + $dir .= '/'; + } + $this->templateBase = $dir; + } + + /** + * Load a template file. This file will be relative to $this->templateBase. + * A '.mustache' file extension is assumed if none is provided in $file. + * + * @access public + * @param string $file + * @return void + */ + public function loadTemplate($file) { + if (strpos($file, '.') === false) { + $file .= '.mustache'; + } + + $filename = $this->templateBase . $file; + if (file_exists($filename)) { + $this->template = file_get_contents($filename); + } else { + $this->template = null; + } + } + + /** + * Load a partial, either from $this->partials or from a file in the templateBase + * directory. + * + * @access protected + * @param string $tag_name + * @return string Partial template. + */ + protected function getPartial($tag_name) { + try { + if ($result = parent::getPartial($tag_name)) { + return $result; + } + } catch (MustacheException $e) { + // Ignore the UNKNOWN_PARTIAL exceptions, we'll just look for a template file. + if ($e->getCode() !== MustacheException::UNKNOWN_PARTIAL) { + throw $e; + } + } + + $filename = $this->templateBase . $tag_name . '.mustache'; + if (file_exists($filename)) { + $this->partials[$tag_name] = file_get_contents($filename); + return $this->partials[$tag_name]; + } else { + if ($this->throwPartialExceptions) { + throw new MustacheException( + 'Unknown partial: ' . $tag_name, + MustacheException::UNKNOWN_PARTIAL + ); + } else { + return ''; + } + } + } +} \ No newline at end of file