[limb-svn] r6508 - in 3.x/trunk/limb/macro: src src/filters tests/cases tests/cases/filters

svn at limb-project.com svn at limb-project.com
Thu Nov 8 18:00:31 MSK 2007


Author: serega
Date: 2007-11-08 18:00:31 +0300 (Thu, 08 Nov 2007)
New Revision: 6508
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6508

Modified:
   3.x/trunk/limb/macro/src/filters/htmlspecialchars.filter.php
   3.x/trunk/limb/macro/src/filters/number_format.filter.php
   3.x/trunk/limb/macro/src/filters/strtolower.filter.php
   3.x/trunk/limb/macro/src/filters/strtoupper.filter.php
   3.x/trunk/limb/macro/src/filters/ucfirst.filter.php
   3.x/trunk/limb/macro/src/lmbMacroFilterDictionary.class.php
   3.x/trunk/limb/macro/src/lmbMacroFilterInfo.class.php
   3.x/trunk/limb/macro/tests/cases/filters/lmbMacroNumberFormatFilterTest.class.php
   3.x/trunk/limb/macro/tests/cases/filters/lmbMacroStrToLowerFilterTest.class.php
   3.x/trunk/limb/macro/tests/cases/lmbMacroFilterDictionaryTest.class.php
Log:
-- now filters supports aliases. @aliases notation can be used in filter declaration to give filters more names.

Modified: 3.x/trunk/limb/macro/src/filters/htmlspecialchars.filter.php
===================================================================
--- 3.x/trunk/limb/macro/src/filters/htmlspecialchars.filter.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/src/filters/htmlspecialchars.filter.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -12,6 +12,7 @@
  * class lmbMacroHtmlSpecialCharsFilter.
  *
  * @filter htmlspecialchars
+ * @aliases html
  * @package macro
  * @version $Id$
  */ 

Modified: 3.x/trunk/limb/macro/src/filters/number_format.filter.php
===================================================================
--- 3.x/trunk/limb/macro/src/filters/number_format.filter.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/src/filters/number_format.filter.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -12,6 +12,7 @@
  * class lmbMacroNumberFormatFilter.
  *
  * @filter number_format
+ * @aliases number
  * @package macro
  * @version $Id$
  */ 

Modified: 3.x/trunk/limb/macro/src/filters/strtolower.filter.php
===================================================================
--- 3.x/trunk/limb/macro/src/filters/strtolower.filter.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/src/filters/strtolower.filter.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -12,6 +12,7 @@
  * class lmbMacroStrToLowerFilter.
  *
  * @filter strtolower
+ * @aliases lowercase
  * @package macro
  * @version $Id$
  */ 

Modified: 3.x/trunk/limb/macro/src/filters/strtoupper.filter.php
===================================================================
--- 3.x/trunk/limb/macro/src/filters/strtoupper.filter.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/src/filters/strtoupper.filter.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -12,6 +12,7 @@
  * class lmbMacroStrToUpperFilter.
  *
  * @filter strtoupper
+ * @aliases uppercase
  * @package macro
  * @version $Id$
  */ 

Modified: 3.x/trunk/limb/macro/src/filters/ucfirst.filter.php
===================================================================
--- 3.x/trunk/limb/macro/src/filters/ucfirst.filter.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/src/filters/ucfirst.filter.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -12,6 +12,7 @@
  * class lmbMacroUcFirstFilter.
  *
  * @filter ucfirst
+ * @aliases capitalize
  * @package macro
  * @version $Id$
  */ 

Modified: 3.x/trunk/limb/macro/src/lmbMacroFilterDictionary.class.php
===================================================================
--- 3.x/trunk/limb/macro/src/lmbMacroFilterDictionary.class.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/src/lmbMacroFilterDictionary.class.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -47,12 +47,23 @@
 
   function register($filter_info)
   {
-    $name_to_lower = strtolower($filter_info->getName());
-
-    if(isset($this->info[$name_to_lower]))
-      return;
-
-    $this->info[$name_to_lower] = $filter_info;
+    $names = array(strtolower($filter_info->getName()));
+    
+    $aliases = $filter_info->getAliases();
+    if(count($aliases))
+    {
+      $aliases = array_map('strtolower', $aliases);
+      
+      $names = array_merge($names, $aliases);
+    }
+    
+    foreach($names as $filter_name)
+    {
+      if(isset($this->info[$filter_name]))
+        return;
+  
+      $this->info[$filter_name] = $filter_info;
+    }
   }
 
   function registerFromFile($file)

Modified: 3.x/trunk/limb/macro/src/lmbMacroFilterInfo.class.php
===================================================================
--- 3.x/trunk/limb/macro/src/lmbMacroFilterInfo.class.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/src/lmbMacroFilterInfo.class.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -18,6 +18,7 @@
   protected $name = '';
   protected $class = '';
   protected $file;
+  protected $aliases = array();
 
   function __construct($name, $class)
   {
@@ -33,6 +34,13 @@
     $filter = $annotations['filter'];
     $info = new lmbMacroFilterInfo($filter, $class);
 
+    if(isset($annotations['aliases']))
+    {
+      $filter_aliases = explode(',' , $annotations['aliases']);
+      $filter_aliases = array_map('trim', $filter_aliases);
+      $info->setAliases($filter_aliases);
+    }
+    
     $info->setFile($file);
 
     return $info;
@@ -63,5 +71,15 @@
   {
     return $this->file;
   }
+  
+  function setAliases($aliases)
+  {
+    $this->aliases = $aliases;
+  }
+  
+  function getAliases()
+  {
+    return $this->aliases;
+  }
 }
 

Modified: 3.x/trunk/limb/macro/tests/cases/filters/lmbMacroNumberFormatFilterTest.class.php
===================================================================
--- 3.x/trunk/limb/macro/tests/cases/filters/lmbMacroNumberFormatFilterTest.class.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/tests/cases/filters/lmbMacroNumberFormatFilterTest.class.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -26,5 +26,14 @@
     $out = $tpl->render();
     $this->assertEqual($out, '1 234,56');
   }
+
+  function testAlias()
+  {
+    $code = '{$#var|number:2,","," "}';
+    $tpl = $this->_createMacroTemplate($code, 'tpl.html');
+    $tpl->set('var', 1234.56);
+    $out = $tpl->render();
+    $this->assertEqual($out, '1 234,56');
+  }
 }
 

Modified: 3.x/trunk/limb/macro/tests/cases/filters/lmbMacroStrToLowerFilterTest.class.php
===================================================================
--- 3.x/trunk/limb/macro/tests/cases/filters/lmbMacroStrToLowerFilterTest.class.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/tests/cases/filters/lmbMacroStrToLowerFilterTest.class.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -17,5 +17,14 @@
     $out = $tpl->render();
     $this->assertEqual($out, 'hello');
   }
+
+  function testAlias()
+  {
+    $code = '{$#var|lowercase}';
+    $tpl = $this->_createMacroTemplate($code, 'tpl.html');
+    $tpl->set('var', 'HELLO');
+    $out = $tpl->render();
+    $this->assertEqual($out, 'hello');
+  }  
 }
 

Modified: 3.x/trunk/limb/macro/tests/cases/lmbMacroFilterDictionaryTest.class.php
===================================================================
--- 3.x/trunk/limb/macro/tests/cases/lmbMacroFilterDictionaryTest.class.php	2007-11-08 14:44:04 UTC (rev 6507)
+++ 3.x/trunk/limb/macro/tests/cases/lmbMacroFilterDictionaryTest.class.php	2007-11-08 15:00:31 UTC (rev 6508)
@@ -29,6 +29,19 @@
     $this->assertIsA($dictionary->findFilterInfo('testtag'), 'lmbMacroFilterInfo');
   }
 
+  function testFindFilterInfoByAlias()
+  {
+    $filter_info = new lmbMacroFilterInfo('testtag', 'SomeFilterClass');
+    $filter_info->setAliases(array('testtag_alias', 'testtag_alias2'));
+    $dictionary = new lmbMacroFilterDictionary();
+    $dictionary->register($filter_info, $file = 'whatever');
+
+    $this->assertIsA($dictionary->findFilterInfo('testtag'), 'lmbMacroFilterInfo');
+    $this->assertIsA($dictionary->findFilterInfo('testtag_alias'), 'lmbMacroFilterInfo');
+    $this->assertIsA($dictionary->findFilterInfo('testtag_alias2'), 'lmbMacroFilterInfo');
+  }
+  
+
   function testRegisterFilterInfoOnceOnly()
   {
     $dictionary = new lmbMacroFilterDictionary();
@@ -56,6 +69,7 @@
 <?php
 /**
  * @filter foo_{$rnd}
+ * @aliases foo1_{$rnd}, foo2_{$rnd} 
  */
 class Foo{$rnd}Filter extends lmbMacroFilter{}
 
@@ -67,6 +81,7 @@
     file_put_contents($file = LIMB_VAR_DIR . '/filters/' . $rnd . '.filter.php', $contents);
 
     $filter_info1 = new lmbMacroFilterInfo("foo_$rnd", "Foo{$rnd}Filter");
+    $filter_info1->setAliases(array("foo1_$rnd", "foo2_$rnd"));
     $filter_info1->setFile($file);
     $filter_info2 = new lmbMacroFilterInfo("bar_$rnd", "Bar{$rnd}Filter");
     $filter_info2->setFile($file);
@@ -75,6 +90,7 @@
     $dictionary->registerFromFile($file);
 
     $this->assertEqual($dictionary->findFilterInfo("foo_$rnd"), $filter_info1);
+    $this->assertEqual($dictionary->findFilterInfo("foo1_$rnd"), $filter_info1);
     $this->assertEqual($dictionary->findFilterInfo("bar_$rnd"), $filter_info2);
   }
 }



More information about the limb-svn mailing list