Added _throwsException() check and refactored exception checks.
This commit is contained in:
+30
-8
@@ -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 '';
|
||||
|
||||
Reference in New Issue
Block a user