]> git.andy128k.dev Git - ipf.git/commitdiff
separate tags logic from implementation wrapper
authorAndrey Kutejko <andy128k@gmail.com>
Sun, 4 Jan 2015 12:25:11 +0000 (14:25 +0200)
committerAndrey Kutejko <andy128k@gmail.com>
Sun, 4 Jan 2015 12:25:11 +0000 (14:25 +0200)
ipf/project_template.php

index 5743b0e4d6216510e59d1972bac8306875830694..cbe569cac7ad76c18fa216797c90beb1e070b180 100644 (file)
@@ -72,13 +72,9 @@ final class IPF_Project_Template
         }
         return $params;
     }
-}
 
-class IPF_Project_Template_Tag_Url extends IPF_Template_Tag
-{
-    function start()
+    public static function urlTag($args)
     {
-        $args = func_get_args();
         $count = count($args);
         if ($count === 0)
             throw new IPF_Exception('No view specified');
@@ -86,44 +82,58 @@ class IPF_Project_Template_Tag_Url extends IPF_Template_Tag
         $view = array_shift($args);
 
         if ($count === 2 && is_array($args[0])) {
-            echo IPF_HTTP_URL::urlForView($view, $args[0]);
+            return IPF_HTTP_URL::urlForView($view, $args[0]);
         } elseif ($count === 3 && is_array($args[0]) && is_array($args[1])) {
-            echo IPF_HTTP_URL::urlForView($view, $args[0], $args[1]);
+            return IPF_HTTP_URL::urlForView($view, $args[0], $args[1]);
         } else {
-            echo IPF_HTTP_URL::urlForView($view, $args);
+            return IPF_HTTP_URL::urlForView($view, $args);
         }
     }
-}
 
-class IPF_Project_Template_Tag_Params extends IPF_Template_Tag
-{
-    private function setParam(&$params, $key, $value)
-    {
-        if ($value === null)
-            unset($params[$key]);
-        else
-            $params[$key] = $value;
-    }
-
-    function start()
+    public static function paramsTag($args)
     {
         $params = array();
 
-        $args = func_get_args();
         $count = count($args);
-        for ($i = 0; $i < $count; ++$i) {
+        for ($i = 0; $i < $count; ) {
             if (is_array($args[$i])) {
-                foreach ($args[$i] as $key => $value)
-                    $this->setParam($params, $key, $value);
+                foreach ($args[$i] as $key => $value) {
+                    if ($value === null)
+                        unset($params[$key]);
+                    else
+                        $params[$key] = $value;
+                }
+
+                ++$i;
             } else {
                 $key = $args[$i];
                 $value = $args[$i+1];
-                $this->setParam($params, $key, $value);
-                ++$i;
+                if ($value === null)
+                    unset($params[$key]);
+                else
+                    $params[$key] = $value;
+
+                $i += 2;
             }
         }
 
-        echo IPF_HTTP_URL::generateParams($params);
+        return IPF_HTTP_URL::generateParams($params);
+    }
+}
+
+class IPF_Project_Template_Tag_Url extends IPF_Template_Tag
+{
+    function start()
+    {
+        echo IPF_Project_Template::urlTag(func_get_args());
+    }
+}
+
+class IPF_Project_Template_Tag_Params extends IPF_Template_Tag
+{
+    function start()
+    {
+        echo IPF_Project_Template::paramsTag(func_get_args());
     }
 }