diff --git a/Mustache.php b/Mustache.php index bed4693..80e526f 100644 --- a/Mustache.php +++ b/Mustache.php @@ -17,10 +17,18 @@ class Mustache { public $_otag = '{{'; public $_ctag = '}}'; - // Should this Mustache throw exceptions when it finds unexpected tags? - protected $throwSectionExceptions = true; - protected $throwPartialExceptions = false; - protected $throwVariableExceptions = false; + /** + * Should this Mustache throw exceptions when it finds unexpected tags? + * + * @see self::_throwsException() + */ + protected $_throwsExceptions = array( + MustacheException::UNKNOWN_VARIABLE => false, + MustacheException::UNCLOSED_SECTION => true, + MustacheException::UNEXPECTED_CLOSE_SECTION => true, + MustacheException::UNKNOWN_PARTIAL => false, + MustacheException::UNKNOWN_PRAGMA => true, + ); // Override charset passed to htmlentities() and htmlspecialchars(). Defaults to UTF-8. protected $_charset = 'UTF-8'; @@ -265,6 +273,20 @@ class Mustache { return $this->_pragmas[$pragma_name]; } + + /** + * Check whether this Mustache instance throws a given exception. + * + * Expects exceptions to be MustacheException error codes (i.e. class constants). + * + * @access protected + * @param mixed $exception + * @return void + */ + protected function _throwsException($exception) { + return (isset($this->_throwsExceptions[$exception]) && $this->_throwsExceptions[$exception]); + } + /** * Loop through and render individual Mustache tags. * @@ -316,14 +338,14 @@ class Mustache { switch ($modifier) { case '#': case '^': - if ($this->throwSectionExceptions) { + if ($this->_throwsException(MustacheException::UNCLOSED_SECTION)) { throw new MustacheException('Unclosed section: ' . $tag_name, MustacheException::UNCLOSED_SECTION); } else { return ''; } break; case '/': - if ($this->throwSectionExceptions) { + if ($this->_throwsException(MustacheException::UNEXPECTED_CLOSE_SECTION)) { throw new MustacheException('Unexpected close section: ' . $tag_name, MustacheException::UNEXPECTED_CLOSE_SECTION); } else { return ''; @@ -503,7 +525,7 @@ class Mustache { } } - if ($this->throwVariableExceptions) { + if ($this->_throwsException(MustacheException::UNKNOWN_VARIABLE)) { throw new MustacheException("Unknown variable: " . $tag_name, MustacheException::UNKNOWN_VARIABLE); } else { return ''; @@ -525,7 +547,7 @@ class Mustache { return $this->_partials[$tag_name]; } - if ($this->throwPartialExceptions) { + if ($this->_throwsException(MustacheException::UNKNOWN_PARTIAL)) { throw new MustacheException('Unknown partial: ' . $tag_name, MustacheException::UNKNOWN_PARTIAL); } else { return '';