Add a throws_exceptions constructor option.
This allows overriding strictness without subclassing. Closes #64.
This commit is contained in:
@@ -94,6 +94,15 @@ class Mustache {
|
|||||||
* 'pragmas' => array(
|
* 'pragmas' => array(
|
||||||
* Mustache::PRAGMA_UNESCAPED => true
|
* Mustache::PRAGMA_UNESCAPED => true
|
||||||
* ),
|
* ),
|
||||||
|
*
|
||||||
|
* // an array of thrown exceptions to enable/disable
|
||||||
|
* 'throws_exceptions' => array(
|
||||||
|
* MustacheException::UNKNOWN_VARIABLE => false,
|
||||||
|
* MustacheException::UNCLOSED_SECTION => true,
|
||||||
|
* MustacheException::UNEXPECTED_CLOSE_SECTION => true,
|
||||||
|
* MustacheException::UNKNOWN_PARTIAL => false,
|
||||||
|
* MustacheException::UNKNOWN_PRAGMA => true,
|
||||||
|
* ),
|
||||||
* );
|
* );
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
@@ -139,6 +148,12 @@ class Mustache {
|
|||||||
}
|
}
|
||||||
$this->_pragmas = $options['pragmas'];
|
$this->_pragmas = $options['pragmas'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($options['throws_exceptions'])) {
|
||||||
|
foreach ($options['throws_exceptions'] as $exception => $value) {
|
||||||
|
$this->_throwsExceptions[$exception] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -91,6 +91,34 @@ class MustacheExceptionTest extends PHPUnit_Framework_TestCase {
|
|||||||
$mustache = new TestableMustache();
|
$mustache = new TestableMustache();
|
||||||
$mustache->testableGetPragmaOptions('PRAGMATIC');
|
$mustache->testableGetPragmaOptions('PRAGMATIC');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testOverrideThrownExceptionsViaConstructorOptions() {
|
||||||
|
$exceptions = array(
|
||||||
|
MustacheException::UNKNOWN_VARIABLE,
|
||||||
|
MustacheException::UNCLOSED_SECTION,
|
||||||
|
MustacheException::UNEXPECTED_CLOSE_SECTION,
|
||||||
|
MustacheException::UNKNOWN_PARTIAL,
|
||||||
|
MustacheException::UNKNOWN_PRAGMA,
|
||||||
|
);
|
||||||
|
|
||||||
|
$one = new TestableMustache(null, null, null, array(
|
||||||
|
'throws_exceptions' => array_fill_keys($exceptions, true)
|
||||||
|
));
|
||||||
|
|
||||||
|
$thrownExceptions = $one->getThrownExceptions();
|
||||||
|
foreach ($exceptions as $exception) {
|
||||||
|
$this->assertTrue($thrownExceptions[$exception]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$two = new TestableMustache(null, null, null, array(
|
||||||
|
'throws_exceptions' => array_fill_keys($exceptions, false)
|
||||||
|
));
|
||||||
|
|
||||||
|
$thrownExceptions = $two->getThrownExceptions();
|
||||||
|
foreach ($exceptions as $exception) {
|
||||||
|
$this->assertFalse($thrownExceptions[$exception]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PickyMustache extends Mustache {
|
class PickyMustache extends Mustache {
|
||||||
@@ -117,4 +145,8 @@ class TestableMustache extends Mustache {
|
|||||||
public function testableGetPragmaOptions($pragma_name) {
|
public function testableGetPragmaOptions($pragma_name) {
|
||||||
return $this->_getPragmaOptions($pragma_name);
|
return $this->_getPragmaOptions($pragma_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getThrownExceptions() {
|
||||||
|
return $this->_throwsExceptions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user