diff --git a/class.TplBlock.php b/class.TplBlock.php index 8de600e..ac9a72e 100644 --- a/class.TplBlock.php +++ b/class.TplBlock.php @@ -65,12 +65,15 @@ class TplBlock { $this->subBlocs[$bloc->name][] = $bloc; } - private function subBlockRegex($prefix, $blocName) { + private function subBlockRegex($prefix, $blocName,$trim = true) { + echo "t".$trim; return '/' . self::blockStartStart . preg_quote($prefix . $blocName) . self::blockStartEnd + . (($trim === false)? '' : '(?:\R|)?' ) . '(.*?)' + . (($trim === false)? '' : '(?:\R|)?' ) . self::blockEndStart . preg_quote($prefix . $blocName) . self::blockEndEnd @@ -78,7 +81,8 @@ class TplBlock { } /* - * Shake template and input vars and returns the text + * Shake the template string and input vars + * Then returns the parsed text * Input: * $str String containing the template to parse * $subBlocsPath String optional, for this class internal use. The path like "bloc.subbloc" @@ -100,7 +104,7 @@ class TplBlock { //parse blocs foreach($this->subBlocs as $blocName => $blocsArr){ $str = preg_replace_callback( - $this->subBlockRegex($prefix, $blocName), + $this->subBlockRegex($prefix, $blocName, $trim), function($m) use($blocName,$blocsArr,$prefix, $trim) { $out = ""; foreach($blocsArr as $bloc){ @@ -115,12 +119,8 @@ class TplBlock { // Delete unused blocs $str = preg_replace($this->unusedRegex, "", $str); - - if($trim){ - return trim($str,"\n"); - }else{ - return $str; - } + return $str; + } /* diff --git a/sample/sample.php b/sample/sample.php index fc06316..1ecb79c 100644 --- a/sample/sample.php +++ b/sample/sample.php @@ -44,4 +44,4 @@ for ($i = 2; $i < 121; $i++){ -echo $tpl->apply_tpl_file("tpl.txt",true); \ No newline at end of file +echo $tpl->apply_tpl_file("tpl.txt"); \ No newline at end of file diff --git a/test-TplBlock/sample.txt b/test-TplBlock/sample.txt new file mode 100644 index 0000000..a6346a1 --- /dev/null +++ b/test-TplBlock/sample.txt @@ -0,0 +1,15 @@ +hello {{title}} {{name}} {{firstname}} + +The first primes numbers are: + + - {{primes.number}} + + +Lets list all divisors of: + + +{{number.value}} Have those divisors: + + - {{number.divisor.value}} + + \ No newline at end of file diff --git a/test-TplBlock/test.php b/test-TplBlock/test.php new file mode 100644 index 0000000..5ed5be2 --- /dev/null +++ b/test-TplBlock/test.php @@ -0,0 +1,47 @@ +add_vars(array( + "name" => "Gnieark", + "title" => "Monsieur", + "firstname" => "Grouik" + ) + ); + +$primes = array(1,2,3,5,7,11); + +// a sub bloc +foreach($primes as $prime){ + $tplPrime = new TplBlock('primes'); + $tplPrime->add_vars(array('number' => $prime)); + $tpl->add_sub_block($tplPrime); +} + +// test sub - sub blocs +for ($i = 2; $i < 121; $i++){ + + $tplNumber = new TplBlock('number'); + $tplNumber->add_vars( array("value" => $i)); + $index = 1; + $number = $i; + while ( $number > 1 && $index < count($primes)){ + if($number % $primes[$index] == 0){ + $number = $number / $primes[$index]; + $tplDivisor = new TplBlock("divisor"); + $tplDivisor->add_vars( array("value" => $primes[$index])); + $tplNumber->add_sub_block($tplDivisor); + }else{ + $index++; + } + } + $tpl->add_sub_block($tplNumber); +} + + + +echo $tpl->apply_tpl_file("sample.txt",false); \ No newline at end of file