[limb-svn] r6972 - in 3.x/trunk/limb/net: src tests/cases

svn at limb-project.com svn at limb-project.com
Tue Apr 29 13:04:21 MSD 2008


Author: korchasa
Date: 2008-04-29 13:04:20 +0400 (Tue, 29 Apr 2008)
New Revision: 6972
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6972

Modified:
   3.x/trunk/limb/net/src/lmbUri.class.php
   3.x/trunk/limb/net/tests/cases/lmbUriTest.class.php
Log:
-- fix for file protocol uri without host and only two slashes

Modified: 3.x/trunk/limb/net/src/lmbUri.class.php
===================================================================
--- 3.x/trunk/limb/net/src/lmbUri.class.php	2008-04-28 11:04:46 UTC (rev 6971)
+++ 3.x/trunk/limb/net/src/lmbUri.class.php	2008-04-29 09:04:20 UTC (rev 6972)
@@ -2,9 +2,9 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 lmb_require('limb/core/src/lmbSet.class.php');
 lmb_require('limb/core/src/lmbArrayHelper.class.php');
@@ -30,7 +30,7 @@
   function __construct($str='')
   {
     if($str)
-      $this->reset($str);
+      $this->parse($str);
   }
 
   static function addQueryItems($url, $items=array())
@@ -62,9 +62,19 @@
    */
   function parse($uri)
   {
+    if('file' == substr($uri, 0, 4))
+      $uri = $this->_fixFileProtocol($uri);
+
     $this->reset($uri);
   }
 
+  protected function _fixFileProtocol($url)
+  {
+    if('/' != substr($url, 0, strlen('file:///')))
+      $url = str_replace('file://', 'file:///', $url);
+    return $url;
+  }
+
   function reset($str = null)
   {
     $this->user        = '';

Modified: 3.x/trunk/limb/net/tests/cases/lmbUriTest.class.php
===================================================================
--- 3.x/trunk/limb/net/tests/cases/lmbUriTest.class.php	2008-04-28 11:04:46 UTC (rev 6971)
+++ 3.x/trunk/limb/net/tests/cases/lmbUriTest.class.php	2008-04-29 09:04:20 UTC (rev 6972)
@@ -2,9 +2,9 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 lmb_require('limb/net/src/lmbUri.class.php');
 
@@ -34,6 +34,30 @@
     $this->assertEqual($uri->getPathElement(2), 'test');
   }
 
+  function testCreate_FileProtocolWithoutHost_OnUnix()
+  {
+    $str = 'file://some_dir';
+
+    $uri = new lmbUri($str);
+
+    $this->assertEqual($uri->getProtocol(), 'file');
+    $this->assertEqual($uri->getHost(), '');
+
+    $this->assertEqual($uri->getPath(), '/some_dir');
+  }
+
+  function testCreate_FileProtocolWithoutHost_OnWindows()
+  {
+    $str = 'file://c:/some_dir';
+
+    $uri = new lmbUri($str);
+
+    $this->assertEqual($uri->getProtocol(), 'file');
+    $this->assertEqual($uri->getHost(), '');
+
+    $this->assertEqual($uri->getPath(), 'c:/some_dir');
+  }
+
   function testInvalidUriThrowsException()
   {
     try



More information about the limb-svn mailing list