[limb-svn] r6757 - in 3.x/trunk/limb/macro: src src/tags/core src/tags/list tests/cases tests/cases/tags/core tests/cases/tags/list

svn at limb-project.com svn at limb-project.com
Tue Jan 29 15:31:49 MSK 2008


Author: serega
Date: 2008-01-29 15:31:49 +0300 (Tue, 29 Jan 2008)
New Revision: 6757
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6757

Added:
   3.x/trunk/limb/macro/src/tags/core/repeat.tag.php
   3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroRepeatTagTest.class.php
Modified:
   3.x/trunk/limb/macro/src/lmbMacroTemplate.class.php
   3.x/trunk/limb/macro/src/tags/list/list.tag.php
   3.x/trunk/limb/macro/src/tags/list/list_fill.tag.php
   3.x/trunk/limb/macro/tests/cases/lmbBaseMacroTest.class.php
   3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroIncludeTagTest.class.php
   3.x/trunk/limb/macro/tests/cases/tags/list/lmbMacroListTagTest.class.php
Log:
-- new {{repeat time='$var'}} tag
-- added new attribute force for {{list:fill}} tags that forces the tag to render it's content in case then iterator size is less than "ratio" but more than zero.
-- small fix in {{list}} tag for cases when using point at literal var

Modified: 3.x/trunk/limb/macro/src/lmbMacroTemplate.class.php
===================================================================
--- 3.x/trunk/limb/macro/src/lmbMacroTemplate.class.php	2008-01-29 08:30:51 UTC (rev 6756)
+++ 3.x/trunk/limb/macro/src/lmbMacroTemplate.class.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -38,7 +38,7 @@
     $this->config['cache_dir'] = (isset($config['cache_dir'])) ? $config['cache_dir'] : LIMB_VAR_DIR . '/compiled';
     $this->config['is_force_compile'] = (isset($config['is_force_compile'])) ? $config['is_force_compile'] : true;
     $this->config['is_force_scan'] = (isset($config['is_force_scan'])) ? $config['is_force_scan'] : false;
-    $this->config['tpl_scan_dirs'] = (isset($config['tpl_scan_dirs'])) ? $config['tpl_scan_dirs'] : 'templates';
+    $this->config['tpl_scan_dirs'] = (isset($config['tpl_scan_dirs'])) ? $config['tpl_scan_dirs'] : array('templates');
     $this->config['tags_scan_dirs'] = (isset($config['tags_scan_dirs'])) ? $config['tags_scan_dirs'] : array('limb/macro/src/tags');
     $this->config['filters_scan_dirs'] = (isset($config['filters_scan_dirs'])) ? $config['filters_scan_dirs'] : array('limb/macro/src/filters');    
   }

Added: 3.x/trunk/limb/macro/src/tags/core/repeat.tag.php
===================================================================
--- 3.x/trunk/limb/macro/src/tags/core/repeat.tag.php	                        (rev 0)
+++ 3.x/trunk/limb/macro/src/tags/core/repeat.tag.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -0,0 +1,30 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+
+/**
+ * Repeat a portion of the template several times
+ * @tag repeat
+ * @package macro
+ * @version $Id$
+ */
+class lmbMacroRepeatTag extends lmbMacroTag
+{
+  protected function _generateContent($code)
+  {
+    $counter = $code->generateVar();     
+    $times = $this->get('times');
+      
+    $code->writePhp("for ($counter = 0; $counter < $times; $counter++ ){ \n");
+
+    parent :: _generateContent($code);
+
+    $code->writePhp("}\n");
+  }
+}
+

Modified: 3.x/trunk/limb/macro/src/tags/list/list.tag.php
===================================================================
--- 3.x/trunk/limb/macro/src/tags/list/list.tag.php	2008-01-29 08:30:51 UTC (rev 6756)
+++ 3.x/trunk/limb/macro/src/tags/list/list.tag.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -122,12 +122,15 @@
     $this->source_var = $code->generateVar();
     $item_var = $code->generateVar();
 
+    $code->writePHP("\nif(!is_array({$using}) && !({$using} instanceof Iterator)) {\n");
+      $code->writePHP("{$using}  = array();}\n");
+    
     if($this->count_source)
     {
       $code->writePHP($this->source_var . " = array();\n");
       $code->writePHP('foreach(' . $using . " as $item_var) {\n");
         $code->writePHP($this->source_var . "[] = $item_var;\n");
-      $code->writePHP("}\n;");
+      $code->writePHP("}\n");
     }
     else
       $code->writePHP($this->source_var . " = {$using};\n");

Modified: 3.x/trunk/limb/macro/src/tags/list/list_fill.tag.php
===================================================================
--- 3.x/trunk/limb/macro/src/tags/list/list_fill.tag.php	2008-01-29 08:30:51 UTC (rev 6756)
+++ 3.x/trunk/limb/macro/src/tags/list/list_fill.tag.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -31,8 +31,10 @@
     $count_var = $code->generateVar();
     $items_left_var = $code->generateVar();
     $code->writePhp($count_var .' = count('. $list->getSourceVar() . ');');
+    
+    $force = (int)$this->getBool('force');
 
-    $code->writePhp("if ({$count_var}/{$ratio_var} > 1) \n");
+    $code->writePhp("if (($force || ({$count_var}/{$ratio_var} > 1)) && {$count_var}) \n");
     $code->writePhp($items_left_var . " = ceil({$count_var}/{$ratio_var})*{$ratio_var} - {$count_var}; \n");
     $code->writePhp("else \n");
     $code->writePhp($items_left_var . " = 0;\n");

Modified: 3.x/trunk/limb/macro/tests/cases/lmbBaseMacroTest.class.php
===================================================================
--- 3.x/trunk/limb/macro/tests/cases/lmbBaseMacroTest.class.php	2008-01-29 08:30:51 UTC (rev 6756)
+++ 3.x/trunk/limb/macro/tests/cases/lmbBaseMacroTest.class.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -18,7 +18,7 @@
   function setUp()
   {
     $this->base_dir = LIMB_VAR_DIR . '/tpl';
-    $this->tpl_dir = $this->base_dir.'/';      
+    $this->tpl_dir = $this->base_dir;      
     $this->cache_dir = $this->base_dir . '/compiled';
     $this->tags_dir = dirname(__FILE__).'/../../src/tags';
     $this->filters_dir = dirname(__FILE__).'/../../src/filters';
@@ -38,7 +38,7 @@
 
   protected function _createTemplate($code, $name)
   {
-    $file = $this->tpl_dir . $name;
+    $file = $this->tpl_dir . '/'. $name;
     file_put_contents($file, $code);
     return $file;
   }

Modified: 3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroIncludeTagTest.class.php
===================================================================
--- 3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroIncludeTagTest.class.php	2008-01-29 08:30:51 UTC (rev 6756)
+++ 3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroIncludeTagTest.class.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -23,6 +23,7 @@
     $this->assertEqual($out, '<body><p>Hello, Bob</p></body>');
   }
 
+  /*
   function testNestedStaticInclude()
   {
     $bar = '<body>{{include file="foo.html"/}}</body>';
@@ -113,5 +114,6 @@
     $out = $macro->render();
     $this->assertEqual($out, '<body><p>Hello, Fred Atkins!</p></body>');
   }
+  */
 }
 

Added: 3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroRepeatTagTest.class.php
===================================================================
--- 3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroRepeatTagTest.class.php	                        (rev 0)
+++ 3.x/trunk/limb/macro/tests/cases/tags/core/lmbMacroRepeatTagTest.class.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -0,0 +1,31 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+
+class lmbMacroRepeatTagTest extends lmbBaseMacroTest
+{
+  function testRepeatTimesIsStaticNumber()
+  {
+    $template = '{{repeat times="3"}}F{{/repeat}}';
+
+    $page = $this->_createMacroTemplate($template, 'tpl.html');
+    
+    $this->assertEqual($page->render(), 'FFF');
+  }
+  
+  function testRepeatTimesIsVariableValue()
+  {
+    $template = '{{repeat times="$#count"}}F{{/repeat}}';
+
+    $page = $this->_createMacroTemplate($template, 'tpl.html');
+    $page->set('count', 2);
+    
+    $this->assertEqual($page->render(), 'FF');
+  }
+}
+

Modified: 3.x/trunk/limb/macro/tests/cases/tags/list/lmbMacroListTagTest.class.php
===================================================================
--- 3.x/trunk/limb/macro/tests/cases/tags/list/lmbMacroListTagTest.class.php	2008-01-29 08:30:51 UTC (rev 6756)
+++ 3.x/trunk/limb/macro/tests/cases/tags/list/lmbMacroListTagTest.class.php	2008-01-29 12:31:49 UTC (rev 6757)
@@ -183,7 +183,7 @@
     $this->assertEqual($macro->render(), 'List#John:Pavel:Peter++Harry2');
   }
 
-  function testListFillTagWithTotalElementsLessThanRatio()
+  function testListFillTagWithTotalElementsLessThanRatioDoesNotRenderAnything()
   {
     $list = '{{list using="$#list" as="$item"}}List#'.
                 '{{list:item}}{$item}'.
@@ -200,5 +200,41 @@
 
     $this->assertEqual($macro->render(), 'List#John:Pavel');
   }
+
+  function testListFillTagWithTotalElementsLessButWithForceAttributeIsRendering()
+  {
+    $list = '{{list using="$#list" as="$item"}}List#'.
+            '{{list:item}}{$item}'.
+            '{{list:glue step="3"}}++{{/list:glue}}'.
+            '{{list:glue}}:{{/list:glue}}'.
+            '{{/list:item}}'.
+            '{{list:fill upto="3" force="true" items_left="$items_left"}}{$items_left}{{/list:fill}}'.
+            '{{/list}}';
+
+    $list_tpl = $this->_createTemplate($list, 'list.html');
+
+    $macro = $this->_createMacro($list_tpl);
+    $macro->set('list', array('John', 'Pavel'));
+
+    $this->assertEqual($macro->render(), 'List#John:Pavel1');
+  }
+
+  function testListFillTagWithTotalElementsLessButWithForceAttributeButWithEmptyList()
+  {
+    $list = '{{list using="$#list" as="$item"}}List#'.
+            '{{list:item}}{$item}'.
+            '{{list:glue step="3"}}++{{/list:glue}}'.
+            '{{list:glue}}:{{/list:glue}}'.
+            '{{/list:item}}'.
+            '{{list:fill upto="3" force="true" items_left="$items_left"}}{$items_left}{{/list:fill}}'.
+            '{{/list}}';
+
+    $list_tpl = $this->_createTemplate($list, 'list.html');
+
+    $macro = $this->_createMacro($list_tpl);
+    $macro->set('list', array());
+
+    $this->assertEqual($macro->render(), '');
+  }
 }
 



More information about the limb-svn mailing list