* @return string
* @throws UnexpectedValueException Disallows upwards directory traversal via $templateName
*/
- public function getTemplateFilename( $templateName ) {
+ protected function getTemplateFilename( $templateName ) {
// Prevent upwards directory traversal using same methods as Title::secureAndSplit
if (
strpos( $templateName, '.' ) !== false &&
* @return callable
* @throws RuntimeException
*/
- public function getTemplate( $templateName ) {
+ protected function getTemplate( $templateName ) {
// If a renderer has already been defined for this template, reuse it
if ( isset( $this->renderers[$templateName] ) && is_callable( $this->renderers[$templateName] ) ) {
return $this->renderers[$templateName];
* @return string PHP code (without '<?php')
* @throws RuntimeException
*/
- public function compileForEval( $fileContents, $filename ) {
+ protected function compileForEval( $fileContents, $filename ) {
// Compile the template into PHP code
- $code = self::compile( $fileContents );
+ $code = $this->compile( $fileContents );
if ( !$code ) {
throw new RuntimeException( "Could not compile template: {$filename}" );
* @return string PHP code (with '<?php')
* @throws RuntimeException
*/
- public static function compile( $code ) {
+ protected function compile( $code ) {
if ( !class_exists( 'LightnCandy' ) ) {
throw new RuntimeException( 'LightnCandy class not defined' );
}
}
/**
+ * @dataProvider provideProcessTemplate
+ * @covers TemplateParser::processTemplate
+ * @covers TemplateParser::getTemplate
* @covers TemplateParser::getTemplateFilename
- * @dataProvider provideGetTemplateFilename
*/
- public function testGetTemplateFilename( $dir, $name, $result, $exception = false ) {
+ public function testProcessTemplate( $name, $args, $result, $exception = false ) {
if ( $exception ) {
$this->setExpectedException( $exception );
}
-
- $tp = new TemplateParser( $dir );
- $path = $tp->getTemplateFilename( $name );
- $this->assertEquals( $result, $path );
+ $tp = new TemplateParser( $this->templateDir );
+ $this->assertEquals( $result, $tp->processTemplate( $name, $args ) );
}
- public static function provideGetTemplateFilename() {
+ public static function provideProcessTemplate() {
return array(
array(
- 'dir/templates',
'foobar',
- 'dir/templates/foobar.mustache',
+ array(),
+ "hello world!\n"
+ ),
+ array(
+ 'foobar_args',
+ array(
+ 'planet' => 'world',
+ ),
+ "hello world!\n",
),
array(
- 'dir/templates',
'../foobar',
- '',
+ array(),
+ false,
'UnexpectedValueException'
),
- );
- }
-
- /**
- * @covers TemplateParser::getTemplate
- */
- public function testGetTemplate() {
- $tp = new TemplateParser( $this->templateDir );
- $this->assertTrue( is_callable( $tp->getTemplate( 'foobar' ) ) );
- }
-
- /**
- * @covers TemplateParser::compile
- */
- public function testTemplateCompilation() {
- $this->assertRegExp(
- '/^<\?php return function/',
- TemplateParser::compile( "test" ),
- 'compile a simple mustache template'
- );
- }
-
- /**
- * @covers TemplateParser::compile
- */
- public function testTemplateCompilationWithVariable() {
- $this->assertRegExp(
- '/return \'\'\.htmlentities\(\(string\)\(\(isset\(\$in\[\'value\'\]\) && '
- . 'is_array\(\$in\)\) \? \$in\[\'value\'\] : null\), ENT_QUOTES, '
- . '\'UTF-8\'\)\.\'\';/',
- TemplateParser::compile( "{{value}}" ),
- 'compile a mustache template with an escaped variable'
+ array(
+ 'nonexistenttemplate',
+ array(),
+ false,
+ 'RuntimeException',
+ )
);
}
}