From 19fb6eac2195fa1a93cab26633c6a9fe86a558d8 Mon Sep 17 00:00:00 2001 From: Matt Hackmann Date: Tue, 27 Oct 2015 20:00:28 -0700 Subject: [PATCH 1/2] template file extension now configurable --- src/Dust/Dust.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) mode change 100644 => 100755 src/Dust/Dust.php diff --git a/src/Dust/Dust.php b/src/Dust/Dust.php old mode 100644 new mode 100755 index a051b55..92b7279 --- a/src/Dust/Dust.php +++ b/src/Dust/Dust.php @@ -18,7 +18,10 @@ class Dust implements \Serializable { public $autoloaderOverride; - public function __construct($parser = null, $evaluator = null) { + // Default template extension + private $_extension = 'dust'; + + public function __construct($parser = null, $evaluator = null, $options = null) { if ($parser === null) $parser = new Parse\Parser(); if ($evaluator === null) $evaluator = new Evaluate\Evaluator($this); $this->parser = $parser; @@ -47,6 +50,14 @@ public function __construct($parser = null, $evaluator = null) { "contextDump" => new Helper\ContextDump() ]; $this->automaticFilters = [$this->filters['h']]; + + if (is_array($options)) { + if (isset($options['extension'])) { + $extension = $options['extension']; + $this->_extension = $extension{0} === '.' ? substr($extension, 1) : $extension; + } + } + } public function compile($source, $name = null) { @@ -62,7 +73,10 @@ public function compileFn($source, $name = null) { public function resolveAbsoluteDustFilePath($path, $basePath = null) { //add extension if necessary - if (substr_compare($path, '.dust', -5, 5) !== 0) $path .= '.dust'; + $ext = explode('.', $path); + if (end($ext) !== $this->_extension) { + $path .= '.' . $this->_extension; + } if ($basePath != null) { $possible = realpath($basePath . '/' . $path); if ($possible !== false) return $possible; From 97d156ce24aba1443f83d1f964320578f0928928 Mon Sep 17 00:00:00 2001 From: Matt Hackmann Date: Tue, 27 Oct 2015 20:17:33 -0700 Subject: [PATCH 2/2] updated tests for custom extension --- tests/Dust/FilesystemTest.php | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) mode change 100644 => 100755 tests/Dust/FilesystemTest.php diff --git a/tests/Dust/FilesystemTest.php b/tests/Dust/FilesystemTest.php old mode 100644 new mode 100755 index b828c31..4ceba12 --- a/tests/Dust/FilesystemTest.php +++ b/tests/Dust/FilesystemTest.php @@ -3,7 +3,7 @@ class FilesystemTest extends DustTestBase { public static $dir; - + public static function setUpBeforeClass() { FilesystemTest::$dir = sys_get_temp_dir(); if (FilesystemTest::$dir[strlen(FilesystemTest::$dir) - 1] != '/') FilesystemTest::$dir .= '/'; @@ -18,8 +18,14 @@ public static function setUpBeforeClass() { //add child template $fileRes = file_put_contents(FilesystemTest::$dir . '/childTemplate.dust', '{>baseTemplate/}{dust->compileFile(FilesystemTest::$dir . '/childTemplate'); $expected = "before\noneDefault...newTwo...newThree\nafter"; $this->assertEquals($expected, $this->dust->renderTemplate($compiled, (object)[])); } - + public function testIncludedDirectories() { //add the dir $this->dust->includedDirectories[] = FilesystemTest::$dir; //now have something call the child $this->assertTemplate("Begin - before\noneDefault...newTwo...newThree\nafter - End", 'Begin - {>childTemplate/} - End', (object)[]); } - + + public function testCustomFileExtension() { + $dust = new Dust(null, null, [ 'extension' => 'tl' ]); + $dust->includedDirectories[] = FilesystemTest::$dir; + $template = $dust->compile('{>simpleTemplate/}'); + $render = $dust->renderTemplate($template, (object)[]); + $this->assertEquals($render, "line1\nline2"); + } + } \ No newline at end of file